Nginx меняет перенаправление на неправильный порт, когда я получаю к нему доступ через балансировщик нагрузки
Редактировать - я изменил вопрос, так как ошибался из-за ошибки
У меня возникли некоторые проблемы с развертыванием Openam, и мне было интересно, можете ли вы помочь.
Моя установка выглядит следующим образом: 2 сервера OpenAM настроены за балансировщиком нагрузки (HAproxy). Балансировщик нагрузки настроен за двумя обратными прокси (nginx). Два обратных прокси работают за другим балансировщиком нагрузки (haproxy). Таким образом, запрос будет проходить через Haproxy > nginx > Haproxy > openam
Я могу получить доступ к веб-консоли OpenAM через обратные прокси-серверы без проблем. На этом уровне все отлично работает.
Проблема в том, что я получаю доступ к openam через балансировщик нагрузки перед nginx serevrs.
Мой сервер nginx работает через порт 443. Когда я получаю доступ к openam через haproxy > nginx >haproxy > openam, nginx перенаправляет браузер через порт 443. Именно здесь возникает проблема.
URL-адрес балансировщика нагрузки, с которого я захожу на страницу входа, является http:/loadbalancerHostname:8090:openam/Login/UI. Я могу войти в систему успешно. Но после входа в систему URL-адрес изменится на http:/loadbalancerHostname:443:openam/. Порт не должен меняться.
Почему nginx меняет порт и как его остановить?
Конфигурация nginx:
server {
listen 443;
server_name oamlb1;
location / {
proxy_pass http://oamlb1.mydomain.com:8080;
proxy_set_header X-Real-IP $remote_addr;
}
location /openam {
proxy_pass http://oamlb1.mydomain.com:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host oamlb1.mydomain.com:8080;
}
}
Конфигурация haproxy: (Этот файл для серверов. Файл для обратных прокси идентичен, за исключением того, что он указывает на обратные прокси)
listen http_proxy :8090
mode http
balance roundrobin
option httpclose
option forwardfor
server webA oamreverseproxy1.mydomain.com:443
option forwardfor
Спасибо
2 ответа
Я думаю, у вас есть проблемы с ProxyPassReverse: http://wiki.nginx.org/LikeApache
После успешной аутентификации OpenAM отправляет HTTP 302 для перенаправления клиента на URL-адрес перехода или на URL-адрес перехода по умолчанию (302 не является кодом ошибки...).
Экран входа в систему OpenAM отправит вашему браузеру перенаправление http после входа в систему. Перенаправление основано на заголовке HTTP-узла с исходного сообщения в защищенное приложение.
Попробуйте установить альтернативный номер порта на вкладке "Дополнительно" конфигурации агента openam.