Назад | Перейти на главную страницу

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

Используя PHP с двумя корнями, вам понадобится location блок для каждого. Самое чистое решение - это вложенный блок местоположения в location ^~ /cloud блок. Обратите внимание на использование ^~ модификатор, который делает этот префикс location иметь приоритет над другими location ~ \.php$ блок. Видеть этот документ для большего.

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

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