Nginx SSL with tomcat (moqui) 不能稳定地 运行 moqui with https 地址
Nginx SSL with tomcat (moqui) can't run moqui with https address stably
我在 tomcat 8 前面有 nginx 和 ssl,moqui 在 tomcat.
里面
moqui conf 文件中的 webapp 部分是
<webapp name="webroot" http-port="" https-enabled="false">
<root-screen host=".*" location="component://webroot/screen/webroot.xml"/>
</webapp>
ssl 的 nginx conf header
proxy_set_header Accept-Encoding "";
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080/;
proxy_http_version 1.1;
Tomcat 添加 RemoteIpValve
<Valve className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="192\.168\.1\.14|127\.0\.0\.1"
remoteIpHeader="x-forwarded-for"
remoteIpProxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto"
/>
这应该可以让 tomcat (moqui) 为所有资源提供 https:// 地址。
但是我在地址上发现了一个奇怪的模式。每 3 次刷新页面(例如登录),我在 https:// 地址上获得一次,另外两次获得 http://。如果我刷新页面的速度非常快,那么模式就会改变,一两次使用 http://,然后一次使用 https://。当是https://页面,页面上的links也是https时,点击页面上的link就转到http。
我 运行 nginx 1.8.0 和 tomcat 8 与 moqui 1.6.2。我不知道是否有人 运行 也遇到过这个问题。而且我不知道它是 nginx 和 tomcat 的问题,还是 moqui 的问题。非常感谢任何想法。
您要做什么,始终通过 HTTPS(设置为不需要它的屏幕除外)?
如果是,webapp.@https-enabled 应该为真,为了在 URL 代中获得最佳结果,您还应该告诉它 http/https 端口(如果没有 80/443)和 http/https 主机(都在 webapp 元素的属性中)。
如果问题不在 URL 生成或转发到非安全请求的 HTTPS 时屏幕需要 https(这是 webapp 元素设置的目的),那么您可能会遇到问题nginx 或 Tomcat 配置。
我在 tomcat 8 前面有 nginx 和 ssl,moqui 在 tomcat.
里面moqui conf 文件中的 webapp 部分是
<webapp name="webroot" http-port="" https-enabled="false">
<root-screen host=".*" location="component://webroot/screen/webroot.xml"/>
</webapp>
ssl 的 nginx conf header
proxy_set_header Accept-Encoding "";
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080/;
proxy_http_version 1.1;
Tomcat 添加 RemoteIpValve
<Valve className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="192\.168\.1\.14|127\.0\.0\.1"
remoteIpHeader="x-forwarded-for"
remoteIpProxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto"
/>
这应该可以让 tomcat (moqui) 为所有资源提供 https:// 地址。
但是我在地址上发现了一个奇怪的模式。每 3 次刷新页面(例如登录),我在 https:// 地址上获得一次,另外两次获得 http://。如果我刷新页面的速度非常快,那么模式就会改变,一两次使用 http://,然后一次使用 https://。当是https://页面,页面上的links也是https时,点击页面上的link就转到http。
我 运行 nginx 1.8.0 和 tomcat 8 与 moqui 1.6.2。我不知道是否有人 运行 也遇到过这个问题。而且我不知道它是 nginx 和 tomcat 的问题,还是 moqui 的问题。非常感谢任何想法。
您要做什么,始终通过 HTTPS(设置为不需要它的屏幕除外)?
如果是,webapp.@https-enabled 应该为真,为了在 URL 代中获得最佳结果,您还应该告诉它 http/https 端口(如果没有 80/443)和 http/https 主机(都在 webapp 元素的属性中)。
如果问题不在 URL 生成或转发到非安全请求的 HTTPS 时屏幕需要 https(这是 webapp 元素设置的目的),那么您可能会遇到问题nginx 或 Tomcat 配置。