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

Бесконечный цикл перенаправления Nginx

Почему http://compassionpit.com/blog/ проходит через бесконечный цикл перенаправления? Вот мой файл конфигурации nginx. Сайт управляется сервером nodejs на порту 8000, а Apache обслуживает блог (wordpress) и форум (phpBB). Форум разрешается нормально, по адресу http://www.compassionpit.com/forum/ ...

 server {
        listen          80;
        server_name     www.compassionpit.org;
        rewrite         ^/(.*) http://www.compassionpit.com/$1  permanent;
    }


    server {
        listen       80;                # your server's public IP address
        server_name  www.compassionpit.com;
        index        index.php index.html;

        location ~ ^/$ {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location @blogphp {
            internal;
            root /opt/blog/;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  $document_root/index.php;
            fastcgi_index  index.php;
            fastcgi_pass   127.0.0.1:8080;
        }

        location ~ ^/(forum|blog)/($|.*\.php) {
            root /opt/;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_index  index.php;
            fastcgi_pass   127.0.0.1:8080;
        }

        location ~ ^/(forum|blog) {
            root /opt/;
            try_files $uri $uri/ @blogphp;
        }

        location ~ ^/(forum|blog)/ {
           root /opt/;
        }


        location @backend {
            internal;
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location ~ / {
            root /opt/chat/static/;
            try_files $uri $uri/ @backend;
        }

    }

Я думаю, вы, вероятно, настроили Wordpress без поддомена www в его URL-адресах, и это противоречит тому, как вы настроили Nginx (с server_name www.compassionpit.com).

Итак, когда вы посещаете compassionpit.com/blog/ Nginx перенаправляет вас на www.compassionpit.com/blog/, этот запрос затем попадает в Wordpress, который перенаправляет вас обратно в пустой домен compassionpit.com/blog/.

Nginx, возможно, продолжает обрабатывать другие операторы if. Добавьте "разрыв" в конце операторов if

location ~ ^/(forum|blog)/($|.*\.php) {
        root /opt/;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_index  index.php;
        fastcgi_pass   127.0.0.1:8080;
        break;
    }