Назад | Перейти на главную страницу

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 и т. д.

Это приводит к 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$ блок.