Прочтите этот вопрос о сбоях сервера на Проблема балансировки нагрузки 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