带有tomcat(moqui)的Nginx SSL无法稳定运行带有https地址的moqui

时间:2016-01-29 06:14:38

标签: tomcat nginx moqui

我在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的问题。非常感谢任何想法。

1 个答案:

答案 0 :(得分:1)

你想做什么,总是通过HTTPS(除了屏幕设置不需要它)?

如果是这样,webapp。@ https-enabled应该是true,并且为了获得最佳的URL生成结果,你还应该告诉它http / https端口(如果没有80/443)和http / https主机(所有属性都在webapp元素)。

如果在屏幕需要https(这是webapp元素设置的用途)时,问题不在URL生成或转发到HTTPS以获取非安全请求,那么您可能会遇到nginx或Tomcat配置问题。 / p>