反向代理背后的iccube

时间:2018-12-17 09:23:47

标签: nginx jetty reverse-proxy iccube

我在作为反向代理的nginx后面运行icCube并强制执行https请求。然后,通过http调用icCube作为后端服务器。 Jetty(icCube)收到的请求当前不是https。 我需要一个格式正确的请求URI方案(包含https),因为它用于在icCube中安装的自定义servlet过滤器中进行的SSO身份验证。

我认为Jetty的配置存在问题,因为如Jetty的文档中所述,有关转发的请求:https://www.eclipse.org/jetty/javadoc/9.4.8.v20171121/org/eclipse/jetty/server/ForwardedRequestCustomizer.html 反向代理(nginx)将以下标头传递给码头:

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;

我已经在icCube配置类中处理了码头配置:

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

如何应用转发配置? 预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在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>