我有詹金斯和Apache httpd安装了反向代理。它们安装在同一台电脑上。
我可以直接访问 Jenkins,一切正常。例如,以下链接可以正常工作:http://127.0.0.1:8080/jenkins/manage
如果我尝试通过 Jenkins 直接访问其他页面,它们看起来也很好。
我也可以通过 Apache 通过 SSL 访问 Jenkins:
https://127.0.0.1/jenkins/manage
。没问题。
但是当我在这个页面上按“管理插件”时,我被重定向到以下 URL,http://127.0.0.1/jenkins/pluginManager/
该 URL 已经是纯 HTTP。我收到“未找到”错误页面。
当我在 Apache SSL 下的配置页面上按“保存”时,也会出现类似的错误https://127.0.0.1/jenkins/configure
。我还重定向到纯 HTTP http://127.0.0.1/jenkins/
。
可能这种从 SSL 到纯 HTTP 的切换仅发生在 POST 请求中,但我不是 100% 确定。
在测试期间我根据https://wiki.jenkins-ci.org/display/JENKINS/Disable+security
与 Jenkins 相关的 Apache 配置指令如下:
Listen 443
ProxyPass /jenkins http://127.0.0.1:8080/jenkins nocanon
ProxyPassReverse /jenkins http://127.0.0.1:8080/jenkins
ProxyPreserveHost On
ProxyRequests Off
<Proxy http://127.0.0.1:8080/jenkins*>
SSLRequireSSL
RequestHeader set X_FORWARDED_PROTO 'https'
Order deny,allow
Allow from all
</Proxy>
我使用 Apache apache_2.2.14-win32-x86-openssl-0.9.8k.msi 和 Jenkins ver. 1.580.1。
我可能配置错误了,但我不知道错误在哪里。我的配置有什么问题?
如果我遗漏了重要细节,请告诉我,以便我可以在此处添加它们。
提前致谢。
答案1
已修复 Apache 指令。
错误指令:
RequestHeader set X_FORWARDED_PROTO 'https'
正确指令:
RequestHeader set X-FORWARDED-PROTO 'https'
我最初是从http://www.redmine.org/projects/redmine/wiki/FAQ#为什么Redmine使用http链接时我需要使用https链接然后复制到我的 Apache 配置文件中。
我没有修改 redmine 页面,因为它使用下划线,而不是使用破折号HTTP 标头字段列表
以下页面帮助我找到了问题:https://wiki.jenkins-ci.org/display/JENKINS/Running+Jenkins+behind+Apache