如果使用前缀,则无法访问 Jenkins

如果使用前缀,则无法访问 Jenkins

我目前遇到的问题就是,如果我使用前缀启动 Jenkins,则无法访问它。前缀是使 Jenkins 在 myurl.de/jenkins(而不是 myurl.de:8101)下可用的必要条件。

我的 apache2 配置文件 /etc/apache2/sites-available/000-default.conf 包含:

    ProxyPass /jenkins http://localhost:8101/ nocanon
    ProxyPassReverse /jenkins http://localhost:8101/
    ProxyRequests     Off 
    AllowEncodedSlashes NoDecode

就像在https://wiki.jenkins-ci.org/display/JENKINS/Running+Jenkins+behind+Apache。如果我单独使用以下命令运行 Jenkins:java -jar jenkins.war --httpPort=8101一切正常,除了对 myurl.de/jenkins 的调用只会产生缺陷端,因为上下文路径错误,并且该端的其他部分(例如图像)是从错误的位置加载的(从 myurl.de/image.png 而不是 myurl.de/jenkins/image.png)。

因此,如上面的链接所述,我已经使用 启动了 Jenkins java -jar jenkins.war --httpPort=8101 --prefix=/jenkins。不幸的是,它说:

Running from: /home/dgr/jenkins2/jenkins.war
webroot: $user.home/.jenkins
Jan 29, 2016 2:25:50 PM winstone.Logger logInternal
INFO: Beginning extraction from war file
Jan 29, 2016 2:25:50 PM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: jetty-winstone-2.9
Jan 29, 2016 2:25:52 PM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: NO JSP Support for /jenkins, did not find org.apache.jasper.servlet.JspServlet
Jenkins home directory: /home/dgr/.jenkins found at: $user.home/.jenkins

并且仅从 :8101 和 /jenkins 响应 404。这是一个已知错误吗?我找不到此行为的其他描述。

从 Docker 容器运行 Jenkins 并设置时也会发生同样的情况JENKINS_OPTS --prefix=/jenkins)。我使用的是最新的 Jenkins 1.646 和最新的 Docker 镜像。不同的解决方案,例如在配置 -> Jenkins URL 下的 UI 中设置路径,如建议的那样https://stackoverflow.com/questions/9089566/jenkins-website-root-path也不起作用。

答案1

代理配置和上下文路径必须匹配。

您引用的文档中的代理配置示例假定上下文路径是默认的 /。

您将 Jenkins 的上下文路径更改为 /jenkins。要通过 localhost 访问它,您可以使用 URLhttp://127.0.0.1:8101/詹金斯

需要更新代理配置:

ProxyPass /jenkins http://localhost:8101/jenkins nocanon
ProxyPassReverse /jenkins http://localhost:8101/jenkins

相关内容