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;
        }
}
2
задан 13 August 2017 в 08:53
1 ответ

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

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

    location ~ \.php$ {
        ...
    }
}
2
ответ дан 3 December 2019 в 11:27

Теги

Похожие вопросы