В официальной документации 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;
}
Полный файл конфигурации можно найти здесь
Что такое внутренний
на самом деле перенаправление на? В комментариях говорится, что он удаляет фронт-контроллер из URI, но я не совсем уверен, как это сделать.
Он ничего не перенаправляет. Он определяет, как внешние перенаправления , то есть такие места, как http://example.com/app.php/some-path
, должны обрабатываться; пока установлено, они должны возвращать 404
, разрешая только внутренние перенаправления . Условия, обрабатываемые как внутренние перенаправления, перечислены в документации для внутренней
директивы :
Указывает, что данное расположение может использоваться только для внутренних Запросы. Для внешних запросов ошибка клиента 404 (не найдена) вернулся. К внутренним запросам относятся:
- запросы, перенаправленные директивами
error_page
,index
,random_index
иtry_files
;- запросы, перенаправленные полем заголовка ответа
X-Accel-Redirect
с вышестоящего сервера;- подзапросы, сформированные командой
include virtual
модуля ngx_http_ssi_module и посредством ngx_http_addition_module директивы модуля;- запросов, измененных директивой
rewrite
.