公式のNGINXドキュメントでは、本番レベルのSymfony用に次の構成があります。
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
完全な設定ファイルは見つけることができます ここ
internal
は実際に何にリダイレクトしていますか?コメントでは、フロントコントローラーがURIから削除されると書かれていますが、その方法は完全にはわかりません。
何もリダイレクトしません。 外部リダイレクト、つまりhttp://example.com/app.php/some-path
のような場所を処理する方法を指定します。設定中は、404
を返す必要があり、内部リダイレクトのみを許可します。内部リダイレクトとして処理される条件は、 internal
ディレクティブ のドキュメントにリストされています。
特定の場所を内部リクエストにのみ使用できることを指定します。外部リクエストの場合、クライアントエラー404(見つかりません)が返されます。内部リクエストは次のとおりです。
error_page
、index
、random_index
、およびtry_files
ディレクティブによってリダイレクトされたリクエスト。- アップストリームサーバーから
X-Accel-Redirect
応答ヘッダーフィールドによってリダイレクトされた要求。- ngx_http_ssi_module モジュールの
include virtual
コマンドおよび ngx_http_addition_module モジュールディレクティブによって形成されるサブリクエスト。- リクエストは
rewrite
ディレクティブによって変更されました。