Назад | Перейти на главную страницу

NGINX + Symfony - на что перенаправляет внутренняя директива?

В официальной документации 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 директива.