子目录的特定fpm池

时间:2015-01-28 13:32:03

标签: nginx php

我试图让我的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并且它不会加载。我尝试了其他配置,但无论我到目前为止尝试了什么,最终都不会加载或使用全局套接字。

1 个答案:

答案 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;
}