我在tomcat 8前面有带有ssl的nginx,而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
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:// address。
但我在地址上有个奇怪的图案。每3次刷新一个页面(例如登录),我就会在https:// address上得到一次正确的信息,其余两次就会得到http://.。如果我刷新页面的速度非常快,那么模式就会发生变化,用http://,刷新一两次,然后用https://.刷新一次。当它是https:// page并且页面上的链接也是https时,当通过页面上的链接单击时,它会转到http。
我使用Moqui1.6.2运行nginx1.8.0和tomcat 8。我不知道有没有人也遇到过这个问题。我不知道这是nginx和tomcat的问题,还是moqui的问题。非常感谢你的任何想法。
发布于 2016-01-29 19:22:09
您想做什么,总是要通过HTTPS (除了设置为不需要它的屏幕)?
如果是这样的话,webapp .@https应该是正确的,为了获得URL生成的最佳结果,您还应该告诉它http/https端口(如果不是80/443)和http/https主机(所有这些都是webapp元素上的属性)。
如果当屏幕需要HTTPS (这是webapp元素设置的目的)时,问题不在URL生成或转发到https中,那么nginx或Tomcat配置可能会出现问题。
https://stackoverflow.com/questions/35078029
复制相似问题