nginx 又一个重写或内部重定向循环

nginx 又一个重写或内部重定向循环

是的,又一个重定向循环。

已经看过其他问题,但似乎无法让它发挥作用。

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$块中。

相关内容