使它能够处理多个匹配的位置块

在我的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 /目录)中被PHPparsing,并且在/ dev /目录中将启用display_errors。 但似乎这些位置并不是在一起而是在一起。 因此,如果它匹配* .php,它会将其parsing为一个PHP文件,除非它位于/ dev /目录中。

我必须是多余的,并有PHPconfiguration代码重复两次,或者有一种方法,我可以避免这种冗余?

谢谢!

是的,你必须是多余的。 除了在非常有限的情况下, location块只被parsing一次,最接近的匹配胜出。

尽pipe可以通过将通用configuration参数移除到单独的文件,然后使用include将它包括在两个位置来减轻这种痛苦。