NGINX + Symfony-内部指令重定向到什么?

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 中删除了前端控制器,但我并不完全清楚它是如何做到的。

答案1

它不会重定向任何内容。它指定如何外部重定向http://example.com/app.php/some-path即应该处理像的位置;设置后,它们应该返回404,只允许内部重定向. 处理为内部重定向的条件在以下文档中列出:internal指示

指定给定位置仅可用于内部请求。对于外部请求,将返回客户端错误 404(未找到)。内部请求如下:

  • error_pageindexrandom_indextry_files指令重定向的请求;
  • X-Accel-Redirect通过上游服务器的响应头字段重定向的请求;
  • include virtual由命令形成的子请求ngx_http_ssi_模块模块和 ngx_http_addition_module模块指令;
  • 指令改变的请求rewrite

相关内容