Nginx diz que arquivo não encontrado ao solicitar o arquivo PHP em raiz diferente

2

Estou usando uma raiz diferente para o caminho /cloud , mas sempre que tento solicitar qualquer arquivo /cloud/*.php , nginx diz que o arquivo 404 não foi encontrado. Eu posso acessar /cloud/*.html sem nenhum problema. Eu posso até mesmo acessar qualquer /*.php , mas de alguma forma não em /cloud . Meu arquivo de configuração se parece com

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;
        }
}
    
por Sigma 13.08.2017 / 07:53

1 resposta

2

Usando PHP com duas raízes, você precisará de um bloco location para cada. A solução mais limpa é um bloco de localização aninhado dentro de um bloco location ^~ /cloud . Observe o uso do modificador ^~ que faz com que esse prefixo location tenha precedência sobre o outro bloco location ~ \.php$ . Consulte este documento para saber mais.

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

    location ~ \.php$ {
        ...
    }
}
    
por 13.08.2017 / 11:54