我正在 ELB 后面的 AWS 上设置 Jenkins 和 Tomcat。我希望 ELB 终止 SSL 连接并与 8080 上的后端 jenkins 建立非 SSL 连接。
我的连接看起来像--
传入 443 到 ELB -> 非 SSL 传入 8080 上的 EC2 上的 jenkins
传出 443 到 ELB <- 从詹金斯传出到 ELB 的非 SSL 流量
我已经让第一个工作了,我可以通过 https:// 访问 jenkins。但是,jenkins 说——“看来你的反向代理设置坏了”,并有一个链接https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+says+my+reverse+proxy+setup+is+broken
我不太熟悉 tomcat 配置,我认为它需要代理配置。我尝试将 proxyPort="443" 添加到我的 server.xml 中,用于连接器 port="8080" .. 行,但没有成功。
如何确保 ELB 充当 SSL 到非 SSL 代理,并且来自 tomcat 的 jenkins http 响应由 ELB 以 https:// 形式发送
答案1
经过进一步努力解决这个问题,我找到了一种方法来完成我想要做的事情。我没有手动从 jenkins 部署 war,而是从他们的 RHEL 发行版仓库安装了 jenkins,一切似乎都运行良好。
我的设置是:
互联网 -> (443)ELB (443)---> (8080)EC2 詹金斯
ELB 未启用粘性并正在终止 SSL 连接。与 Jenkins 后端的连接通过 HTTP 进行。
希望这可以帮助那些想要在 ELB 后面直接运行 Jenkins 而无需中间有 Web 服务器进行代理的人。
答案2
如果您通过 WAR 文件部署 Jenkins,则可以设置 ELB 以通过端口 8080 转发 HTTPS 连接。
在 ELB 侦听器中,设置一个协议为 HTTPS 的新侦听器,并将端口 443 更改为 8080。选择实例协议为 HTTP,端口为 8080。现在,当您转到https://jenkins.server.com:8080,它应该为你提供从 WAR 运行的 Jenkins。