在我的 nginx conf.d 文件中,我有以下内容:
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ^~ /dev/ {
fastcgi_param PHP_VALUE display_errors=On;
}
我的目标是让 PHP 在任何目录(包括 /dev/ 目录)中解析 *.php,并且在 /dev/ 目录中启用 display_errors。但似乎这些位置不是通过 AND 连接在一起的,而是通过 OR 连接在一起的。因此,如果它与 *.php 匹配,它会将其解析为 PHP 文件,除非它位于 /dev/ 目录中。
我是否必须要冗余并且将 PHP 配置代码重复两次,或者有没有办法可以避免这种冗余?
谢谢!
答案1
是的,你必须要有冗余。除了非常有限的情况外,location
块只会解析一次,最接近的匹配获胜。
include
不过,您可以通过将通用配置参数移除到单独的文件中,然后将其包含在两个地方来减轻这种麻烦。