В официальной документации 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 (Not Found). Внутренние запросы следующие:
- запросы, перенаправленные
error_page
,index
,random_index
, иtry_files
директивы;- запросы, перенаправленные
X-Accel-Redirect
поле заголовка ответа от вышестоящего сервера;- подзапросы, сформированные
include virtual
командование ngx_http_ssi_module модуль и ngx_http_addition_module директивы модуля;- запросы изменены
rewrite
директива.