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

Балансировка нагрузки Nginx перенаправляет на восходящее «имя»

Введение:

Прочтите этот вопрос о сбоях сервера на Проблема балансировки нагрузки nginx с 301 от бэкэнда. В чем-то похожа на мою проблему, но ответа нет. Nginx перенаправляет на «имя» моего апстрима. Дело в том, что это не вопрос, связанный с OpenShift.


Конфигурация:

Я правильно настроил nginx 1.4.4 (собран из исходников, проверено, что он работает должным образом [1]) на одном немасштабируемом механизме DIY с OPENSHIFT_DIY_IP 127.8.143.129. Назовем его A. Я установил один сервер Tornado на указанное оборудование, а другой Tornado на другое немасштабируемое оборудование. (Предположим, что Linux-бокс gear = red hat в той же локальной сети за NAT, упрощенно) Оба являются простыми приложениями hello-world, основанными на репозиторий openshift-hellotornado. Назовем этот DNS-адрес B. B - pam-picaxe.rhcloud.com. DNS-адрес A - main-picaxe.rhcloud.com.

Всякий раз, когда я просматриваю main-picaxe.rhcloud.com, браузер перенаправляется с 302 Найдено с

Location: https://frontends/app.

"frontends" - это имя апстрима в конфигурации nginx. Странно.

[1]: Доказательство того, что nginx работает только с шестерней A: Если я закомментирую строку 20 и раскомментирую строку 21 в файле конфигурации (ссылка pastebin в конце сообщения), все будет работать хорошо, и я получу «Hello world!». но всякий раз, когда у меня есть такой случай, как строка 20 (даже если это DNS-адрес шестерни A вместо шестерни B).

Пробовал решение:

Я потратил на это полдня, устал пытаться это настроить. Я попробовал решение, данное в вышеупомянутом сообщении serverfault, заменив свой блок местоположения на:

location / {
            proxy_pass http://frontends;
            proxy_set_header Host $host;
            proxy_redirect http://frontends http://$host:$server_port/;
            proxy_redirect http://frontends:8080/ http://$host:$server_port/;
}

Это приводит к возникновению цикла перенаправления. Пример вывода журнала, начиная с первого запроса к /:

AAA.BBB.CCC.DDD - - [22/Dec/2013:14:53:53 -0500] "GET / HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ"
AAA.BBB.CCC.DDD - - [22/Dec/2013:14:53:55 -0500] "GET /app HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ"
AAA.BBB.CCC.DDD - - [22/Dec/2013:14:53:55 -0500] "GET /app HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ"
AAA.BBB.CCC.DDD - - [22/Dec/2013:14:53:55 -0500] "GET /app HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ"
AAA.BBB.CCC.DDD - - [22/Dec/2013:14:53:56 -0500] "GET /app HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ"

Есть идеи, как я могу вести нормальную жизнь с балансировкой нагрузки с nginx?

Ссылка на nginx.conf: http://pastebin.com/91CMftSc