Я использую nginx в качестве front-end сервера и tomcat как back-end. Клиенты получают доступ к моему сайту через схему https. Например:Неправильная схема переадресации при использовании nginx в качестве обратного прокси
https://example.com/app/test
Nginx получить это и передать запрос через этот кот локальный адрес:
http://localhost:8080/app/test
Мой Nginx конфигурации:
location/{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto $scheme;
proxy_pass http://localhost:8080;
}
Это прекрасно работает. Однако, когда я пытаюсь использовать перенаправление (http 302), он всегда превращает https в http. Это мой редирект код:
response.sendRedirect("/app/redirect-test");
То, что я ожидал, чтобы перенаправить браузер на:
https://example.com/app/redirect-test
но всегда перенаправляет браузер:
http://example.com/app/redirect-test.
Я также лог заголовки для отслеживания этой проблемы:
host : example.com
x-real-ip : 180.168.202.246
x-forward-for : 180.168.202.246
x-forward-proto : https
connection : close
......
Но я до сих пор не могу понять. И я пытаюсь войти request.getRequestURL(), то я получаю этот результат:
http://example.com/app/test
Как я могу решить эту проблему?
Я понял, что допущена ошибка, Х- Forward-For должен быть X-Forwarded-For и X-Forward-Proto должен быть X-Forwarded-Proto. Но после того, как я это исправил, проблема все еще существует. – guogangj