我在充当反向代理的nginx后面运行icCube,并强制https请求。然后通过http调用icCube作为后端服务器。jetty (icCube)收到的请求当前不是https。我需要一个格式良好的请求URI方案(包含https),因为它用于在icCube中安装的自定义servlet过滤器中进行的单点登录身份验证。
我假设jetty的配置有问题,因为正如jetty的文档中关于转发请求的描述:https://www.eclipse.org/jetty/javadoc/9.4.8.v20171121/org/eclipse/jetty/server/ForwardedRequestCustomizer.html反向代理(nginx)将以下标头传递给jetty:
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Proxied-Https on;
proxy_set_header X-Forwarded-Proto $scheme;我查看了处理jetty配置的icCube configuration类:
crazydev.iccube.server.http.IcCubeHttpComponentConfiguration没有任何关于转发请求的信息。Jetty附带了默认的配置文件,其中一个符合我的需求:https://github.com/eclipse/jetty.project/blob/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-http-forwarded.xml
如何应用转发配置?提前感谢您的帮助。
发布于 2018-12-17 21:27:16
在icCube 6.8.5之前,无法配置ForwardedRequestCustomizer实例。
从icCube 6.8.5开始,icCube.xml配置文件将包含用于此目的的新条目:
<forwardedRequestConfiguration>
<forwardedOnly>...</forwardedOnly>
<proxyAsAuthority>...</proxyAsAuthority>
<forwardedHeader>...</forwardedHeader>
<forwardedHostHeader>...</forwardedHostHeader>
<forwardedServerHeader>...</forwardedServerHeader>
<forwardedProtoHeader>...</forwardedProtoHeader>
<forwardedForHeader>...</forwardedForHeader>
<forwardedHttpsHeader>...</forwardedHttpsHeader>
<forwardedSslSessionIdHeader>...</forwardedSslSessionIdHeader>
<forwardedCipherSuiteHeader>...</forwardedCipherSuiteHeader>
</forwardedRequestConfiguration>https://stackoverflow.com/questions/53812205
复制相似问题