Обратный прокси-сервер Nginx вызывает бесконечный цикл

В моем конфигурационном файле сайта Nginx есть следующее:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    server_name example.com;

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}


server {
    listen 80;
    server_name example2.com;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://localhost/page-1/;
    }
}

Проблема возникает только тогда, когда я добавляю строку proxy_set_header Host $host;. Похоже, что переменная $host создает цикл перенаправления, и запрос GET из журналов сервера ошибок выглядит примерно так: ...page-1/page-1/page-1/page-1... сервер отвечает внутренней ошибкой 500.

Буду очень благодарен, если кто подскажет, что я делаю не так. Спасибо заранее!


person Zak    schedule 02.09.2015    source источник
comment
А что вы ожидали?   -  person Alexey Ten    schedule 03.09.2015
comment
Я ожидал, что example2.com покажет localhost/page-1. Вы знаете, почему это не работает?   -  person Zak    schedule 03.09.2015
comment
Тогда вы не должны устанавливать заголовок Host   -  person Alexey Ten    schedule 03.09.2015
comment
Зачем тогда нужен заголовок Host? Все примеры, которые я видел, включают его.   -  person Zak    schedule 03.09.2015
comment
http://nginx.org/en/docs/http/request_processing.html читайте, как nginx обрабатывает ваш запрос. В вашем случае включение Host приводит к тому, что прокси-запрос попадает в тот же блок сервера.   -  person Alexey Ten    schedule 03.09.2015
comment
Спасибо, если вы отправите это как ответ, я буду рад принять его.   -  person Zak    schedule 03.09.2015
comment
Извините, еще один вопрос. Должен ли я по-прежнему использовать линии proxy_set_header X-Real-IP $remote_addr; и proxy_set_header X-Forwarded-For $remote_addr;?   -  person Zak    schedule 03.09.2015
comment
Это зависит от ваших потребностей, но, вероятно, вам следует   -  person Alexey Ten    schedule 03.09.2015


Ответы (1)


У меня была такая же проблема, и, как предложил Алексей Тен, решение состоит в том, чтобы удалить заголовок Host.

person Cyril Graze    schedule 18.04.2017