Соответствующая конфигурация:
location /myapp {
root /home/me/myapp/www;
try_files $uri $uri/ /myapp/index.php?url=$uri&$args;
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
}
}
У меня абсолютно есть файл foo.html
в /home/me/myapp/www
но когда я просматриваю /myapp/foo.html
это обрабатывается PHP, последний резерв в try_files
список.
Почему это происходит?
Если вы перейдете к /myapp/foo.html
, Nginx проверяет файл на /home/me/myapp/www/myapp/foo.html
. Когда он не находит его там, он переходит к резервному копированию в try_files
список.
Если вам нужен Nginx для проверки файла по адресу /home/me/myapp/www/foo.html
, тогда вам нужно будет использовать alias
вместо того root
в вашем случае использования. Вот решение ...
location /myapp {
alias /home/me/myapp/www;
try_files $uri $uri/ /myapp/index.php?url=$uri&$args;
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
}
}
Обратите внимание, что есть давняя ошибка который alias
и try_files
не работают вместе. Также обратите внимание, что использование alias
может нарушить другие части вашей конфигурации, например обработку PHP!