Да, еще один цикл перенаправления.
Посмотрели на другие вопросы, но просто не получается заставить их работать.
server {
listen 80;
server_name localhost;
charset utf-8;
access_log /srv/http/localhost/log/access.log;
error_log /srv/http/localhost/log/error.log;
location / {
root /srv/http/localhost/www;
index index.html index.php;
}
# prevent access to hidden files
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}
# do not log assets
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# pass the PHP scripts to PHP-FPM socket
location ~* \.php$ {
try_files $uri /index.php;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
include fastcgi_params;
}
}
Это мой полный server{}
блок для основного хоста, что приводит к:
2012/07/29 00:34:52 [ошибка] 14810 # 0: * 10 циклов перезаписи или внутреннего перенаправления при внутреннем перенаправлении на «/index.php», клиент: xx.xx.xx.xx, сервер: localhost, запрос : "GET /phpinfo.php HTTP / 1.1", хост: "xx.xx"
При доступе <anything>.php
- index.php, phpinfo.php, i.php и т. д.
Это приводит к 500 Internal Server Error
, когда я экспериментировал с try_files, у меня получилось 404
время от времени, но в основном цикл перенаправления.
В чем проблема?
Вы положили try_files
в неправильном location
. Должно не быть в location
где вы отправляете запросы вверх по php-fpm, но в вашем location /
.
У вас также есть root
не в том месте. Это должно быть в пределах server
блок, не в пределах location /
блок.
Наконец, вам понадобится fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_filename;
в location ~* \.php$
блок.