我试图让我的nginx.conf变得简单,但是我无法让特定文件夹的.php文件使用与全局文件夹不同的fpm文件。
我目前的配置是
location ~ \.php$ {
# Test for non-existent scripts or throw a 404 error
# Without this line, nginx will blindly send any request ending in .php to php-fpm
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/run/php-fpm.socket;
}
location /postfixadmin/ ~ \.php$ {
# Test for non-existent scripts or throw a 404 error
# Without this line, nginx will blindly send any request ending in .php to php-fpm
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/run/php-fpm.vmail.socket;
}
我试图让子文件夹postfixadmin(及以下)在.php文件中使用/run/php-fpm.vmail.socket,但在所有其他网站上全局使用/,运行/ PHP-fpm.socket。是否可以将此特殊规则应用于单个子文件夹?
不幸的是,这打破了nginx并且它不会加载。我尝试了其他配置,但无论我到目前为止尝试了什么,最终都不会加载或使用全局套接字。
答案 0 :(得分:1)
尝试将其作为第二个位置:
location ~ /postfixadmin/.*\.php$ {
...
}
或者您可以尝试嵌套位置:
location ~ \.php$ {
location ^/postfixadmin/ {
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/run/php-fpm.vmail.socket;
}
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/run/php-fpm.socket;
}