好吧,基本上我想要做的就是设置一个反向代理服务器,在nginx上提供https页面,并使用http将它们redirect到Jetty。 问题是,一旦servlet发现它被发送到http页面,实际上需要https并redirect到https地址。
以前,我已经在Jetty 7下运行了所有代码:
<Set name="forwarded">true</Set>
到Jetty.xml的SelectChannelConnector,现在,我决定升级到Jetty 9我似乎无法find任何替代这个configuration,我敢肯定有没有问题,我的nginx设置,因为它用Jetty工作得很好7。
这里是我的nginxconfiguration的一部分,只是为了使事情更清晰:
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;
这似乎是一个相当简单的事情来实现。 一个只需要在/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在这样一个明显的地方没有这个选项。