Apache httpd 下的 Jenkins 有时会从 SSL 切换到纯 HTTP

Apache httpd 下的 Jenkins 有时会从 SSL 切换到纯 HTTP

我有詹金斯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

相关内容