通过 Pound 代理通过 HTTPS 访问时,Tomcat/JIRA 重定向到 HTTP

通过 Pound 代理通过 HTTPS 访问时,Tomcat/JIRA 重定向到 HTTP

我正在尝试让 JIRA 安装在执行 SSL 终止/“加速”的 Pound 代理后面工作。不幸的是,JIRA (Coyote) 似乎在访问时重定向到 HTTPS:

C:\Users\Josh>openssl s_client -connect www:443
...
---
GET /support HTTP/1.1
Host: www

HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
Location: http://www/support/
Transfer-Encoding: chunked
Date: Sat, 21 Jul 2012 16:05:03 GMT

0

我不知道如何阻止这种情况...这是我的 Pound 配置:

ignorecase 1

listenhttps
  address 10.3.0.12
  port 443
  cert "/usr/local/etc/bundle.pem"

  service
    headrequire "Host: www"
    url "/support.*"
    backend
      address 10.3.0.16
      port 8080
    end
    session
      type cookie
      ttl 1800
      id "X-SA"
    end
  end
end

Tomcat 或 JIRA 中是否有任何设置会影响这一点?

答案1

很高兴您让它正常工作。如果有用的话,我会尝试添加一些颜色。当使用上游设备(代理、负载平衡器等)终止 SSL 时,下游服务不会知道这一点。因此,您的 Tomcat 看到的是正常的 HTTP 流量,特别是对于仅是“/”的 URI。此时,Tomcat 正在执行自引用重定向到 /support/,应用程序在那里配置。

当它执行此操作时,它会构建 URI 以使用 http://... 而不是 HTTPS://,因为它实际上不知道执行 SSL 的上游代理。通过添加上面的 proxyPort 和 ProxyName 指令,您已让 Tomcat 明确了解上游设备,因此它现在将使用 https:// 重建这些重定向,这将起作用。

--马特

答案2

我明白了,Tomcat 中的代理设置解决了这个问题(proxyPort 和 proxyName,IIRC)。

相关内容