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.

Другие вопросы по тегам