Nginx 在不同的根目录下请求 PHP 文件时提示找不到文件

Nginx 在不同的根目录下请求 PHP 文件时提示找不到文件

我使用不同的根路径/cloud,但每当我尝试请求任何/cloud/*.php文件时,nginx 都会说 404 文件未找到。我可以/cloud/*.html毫无问题地访问。我甚至可以访问任何文件/*.php,但不知何故无法访问/cloud。我的配置文件如下所示

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;

        index index.html index.htm index.nginx-debian.html index.php;

        server_name _;


        location /cloud {
                root /home/fhost/public_html;
        }
        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}

答案1

使用具有两个根的 PHP,您将需要location为每个根创建一个块。最干净的解决方案是将位置块嵌套在location ^~ /cloud块中。请注意使用^~修饰符使此前缀location优先于其他location ~ \.php$块。请参阅这个文件了解更多信息。

location ^~ /cloud {
    root /home/fhost/public_html;

    location ~ \.php$ {
        ...
    }
}

相关内容