【问题标题】:Nginx SSL with tomcat (moqui) can't run moqui with https address stably带有tomcat(moqui)的Nginx SSL无法稳定运行带有https地址的moqui
【发布时间】:2016-05-06 19:19:16
【问题描述】:

我在 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:// 地址。

但我在地址上发现了一种奇怪的模式。每 3 次刷新一个页面(例如登录),我得到一次 https:// 地址,另外两次得到 http://。如果我刷新页面非常快,那么模式就会改变,使用 http:// 一到两次,然后使用 https:// 一次。当它是https://页面并且页面上的链接也是https时,点击页面上的链接时会转到http。

我使用 moqui 1.6.2 运行 nginx 1.8.0 和 tomcat 8。不知道有没有人也遇到这个问题。而且我不知道是 nginx 和 tomcat 的问题,还是 moqui 的问题。非常感谢任何想法。

【问题讨论】:

    标签: tomcat nginx moqui


    【解决方案1】:

    您想做什么,总是通过 HTTPS(设置为不需要它的屏幕除外)?

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

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

    【讨论】:

    • 我正在尝试为一个 moqui 实例动态设置多个(不确定的)主机名。所以最好不要在静态的 webapp-list 中配置它们。我按照你之前告诉我的方式在moqui前面设置了一个负载均衡器,并使用http连接配置moqui。我现在弄清楚我的配置有什么问题。在 tomcat 配置的 RemoteIpValue 中。我设置了 internalProxy=".*",然后一切正常。
    • 我的笔记本内部ip是192.168.1.14,nginx和tomcat都在我的笔记本上运行。我还打开了一个 VPN 客户端,所以我不确定多网络适配器环境会导致 3 次重定向。我会将它部署在网络简单的服务器环境中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多