是的,又一个重定向循环。
已经看过其他问题,但似乎无法让它发挥作用。
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 等。
这导致,当我尝试使用 try_files 时,我时不时地500 Internal Server Error
会遇到这种情况,但主要是重定向循环。404
这里有什么问题?
答案1
你输入try_files
错了location
。应该不是位于location
您将请求上游发送到 php-fpm 的地方,但是在您的 中location /
。
您也放root
错了地方。它应该在server
块内,而不是在location /
块内。
最后,你需要一个fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_filename;
在location ~* \.php$
块中。