Хорошо, в общем, я хочу настроить обратный прокси-сервер для обслуживания https-страниц на nginx и перенаправить их на Jetty с помощью http. Проблема в том, что сервлет на самом деле требует https и перенаправляет на https-адрес, как только видит, что он был отправлен на http-страницу.
Раньше я все это запускал под Jetty 7, добавив:
<Set name="forwarded">true</Set>
в jetty.xml для SelectChannelConnector, и теперь, когда я решил перейти на Jetty 9, я не могу найти замену этой конфигурации, и я почти уверен, что с моей настройкой nginx проблем нет, поскольку раньше он прекрасно работал с Jetty 7.
Вот часть моего конфига nginx, чтобы было понятнее, что у меня там:
location / {
proxy_pass http://127.0.0.1:8080;
include /etc/nginx/proxy_params;
}
А вот мой файл proxy_params:
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
решение1
Кажется, это довольно просто сделать. Нужно просто раскомментировать следующую часть в /etc/jetty.xml
:
<!-- Uncomment to enable handling of X-Forwarded- style headers
<Call name="addCustomizer">
<Arg><New class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg>
</Call>
-->
так что либо я был слеп, либо в старой версии Jetty 9 не было этой опции в таком очевидном месте.