как указано выше, uri не передается в nginx. Я включил весь блок «попробовать», чтобы показать это.
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
set $page_to_view "/index.php";
try_files $uri $uri.php $uri/;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
По сути, он говорит: «Эй, мы сделали $ uri.php, и этот файл существует, давайте отправим его на сервер вместо того, чтобы отправлять его на php».
и моя часть fpm ниже.
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
Довольно сток. Я не понимаю, почему nginx больше этого не делает. Я знаю, что он работал с fastcgi под debian, но теперь это не так, и я потерял свой старый файл конфигурации из-за сбоя жесткого диска, и это единственный файл, который я не сделал резервную копию перед отправкой диска обратно, как я думал, что это будет отлично АОК его переписать.
Вы не говорите, какой URI пытаетесь загрузить, но я предполагаю, что он не заканчивается на .php
.
Ваша проблема в том, что вы не принимаете try_files
директива буквально, как следует из названия. Это специально попробовать файл. Это задокументировано как try_files file ... uri;
Это означает, что только последний аргумент будет рассматриваться как откат, вызывающий внутреннюю перезапись. Любой аргумент перед последним проверяется как статический файл и, если он найден, используется как статический файл.
Это означает, что вы можете сделать try_files $uri $uri/ $uri.php;
но ты не можешь сделать try_files $uri $uri.php $uri/
попробуйте заменить
location ~ \.php$ {
с участием
location ~ \.php {
и $ document_root с фактическим каталогом, в котором размещается файл php
например
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;