我在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 header的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://地址。
但我在地址上得到一个奇怪的模式。刷新页面每次3次(例如登录),我在https://地址上获得一次,另外两次获得http://。如果我非常快地刷新页面,那么模式会改变,使用http://一次或两次,然后使用https://改变一次。当它是https://页面并且页面上的链接也是https时,当点击页面上的链接时它会转到http。
我使用moqui 1.6.2运行nginx 1.8.0和tomcat 8。我不知道是否有人遇到这个问题。而且我不知道它是否与nginx和tomcat有关,或者是moqui的问题。非常感谢任何想法。
答案 0 :(得分:1)
你想做什么,总是通过HTTPS(除了屏幕设置不需要它)?
如果是这样,webapp。@ https-enabled应该是true,并且为了获得最佳的URL生成结果,你还应该告诉它http / https端口(如果没有80/443)和http / https主机(所有属性都在webapp元素)。
如果在屏幕需要https(这是webapp元素设置的用途)时,问题不在URL生成或转发到HTTPS以获取非安全请求,那么您可能会遇到nginx或Tomcat配置问题。 / p>