2

Symfony2 2.1.10 インストールに LiipImagineBundle をインストールしましたが、nginx サーバーで小さな構成の問題が発生します。ネット上で、Symfony2 アプリの素晴らしいシンプルな nginx 構成として、この素敵なスニペットを発見しました。いくつかのコード行を追加しました。access.log最も重要なことは、画像などの静的ファイルの を無効にしたいということです。次のルールセットは問題なく機能していました。

location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
    expires 30d;
    add_header Pragma public;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    access_log off;
}

しかし今日、LiipImagineBundle によって生成された画像には、app.phpまたは を介し​​てアクセスする必要があることを発見しましたapp_dev.php。そうしないと生成されず、nginx は次のエラー メッセージをログに記録します。

[error] 28988#0: *733 open() "/[...].jpeg" failed (2: No such file or directory)

これは基本的に 404 です。ファイルは Symfony2 アプリケーション経由ではなく直接アクセスされるため、生成されません。

アクセスログを無効にし、いくつかのキャッシングヘッダーを静的ファイルに追加できるようにする構成が必要ですが、それでも以前と同じルートでそれらを提供します。

そのための可能な解決策はありますか?

4

1 に答える 1

4

問題が解決しました。ボットなどに一致する正規表現を作成しました。これで、要求に応じて画像がキャッシュされますapp.php。イメージが生成されなかった場合、サーバーは、以前にキャッシュされたかどうかに応じて、または後で応答します。対応するnginx構成は次のとおりです。app_dev.phppng|jp[e]g|gif201 Created200 Ok304 Not Modified

location ~ ^/(app_dev|app)\.php(.*?)\.(?:ico|gif|jpe?g|png)$ {
    expires 18h;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    access_log off;

    # still redirect because we are using LiipImagineBundle!
    include fastcgi_params;
    fastcgi_pass unix:/tmp/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param HTTPS off;
}

# more static files:
location ~* \.(?:css|js)$ {
    expires 18h;
    add_header Cache-Control "publi, must-revalidate, proxy-revalidate";
    access_log off;
}

location ~ ^/(app_dev|app)\.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/tmp/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param HTTPS off;
}

これが役立つことを願っています。

于 2013-06-05T10:10:56.867 に答える