You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04下通过Apache2为Jenkins配置SSL并实现子路径访问

解决Apache2反向代理Jenkins到/jenkins子路径的问题

看起来你已经完成了大部分配置工作,只是在反向代理的路径设置和Jenkins的上下文配置上有几个小问题需要调整。我帮你梳理一下修复步骤,让Jenkins能通过jenkins.server.com/jenkins正常访问,同时不影响你的WordPress站点。

1. 修正Apache2的HTTPS虚拟主机配置

替换你现有的<VirtualHost *:443>块内容为以下配置,我已经清理了重复指令并调整了代理路径:

<VirtualHost *:443>
    SSLEngine on
    SSLProxyEngine on

    # SSL证书配置(保留你原有的路径)
    SSLCertificateFile /etc/letsencrypt/live/jenkins.server.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/jenkins.server.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

    ServerName jenkins.server.com
    ServerAlias www.jenkins.server.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # 反向代理核心配置
    ProxyRequests Off
    ProxyPreserveHost On
    RewriteEngine On
    RequestHeader set X-Forwarded-Proto "https"
    AllowEncodedSlashes NoDecode

    # 仅将/jenkins路径代理到Jenkins的对应前缀路径
    ProxyPass /jenkins http://localhost:8080/jenkins nocanon
    ProxyPassReverse /jenkins http://localhost:8080/jenkins

    <Proxy http://localhost:8080/jenkins/*>
        Order deny,allow
        Allow from all
    </Proxy>
</VirtualHost>

关键调整说明:

  • 把ProxyPass的路径从/改为/jenkins,这样只有访问jenkins.server.com/jenkins时才会跳转Jenkins,根路径依然留给WordPress
  • 用localhost代替域名访问Jenkins,减少不必要的域名解析,提升性能
  • 移除了重复的ProxyPass和RewriteEngine指令,避免配置冲突

2. 配置Jenkins的上下文路径

Jenkins默认运行在根路径下,必须告诉它现在要使用/jenkins作为前缀,否则生成的内部链接会出错(比如跳转到/login而不是/jenkins/login)。

针对Debian/Ubuntu系统:

  1. 编辑Jenkins配置文件:
    sudo nano /etc/default/jenkins
    
  2. 找到JENKINS_ARGS行,添加--prefix=/jenkins,如果想限制Jenkins仅本地访问(避免直接通过8080端口暴露),可以再加--httpListenAddress=127.0.0.1,修改后类似:
    JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=8080 --prefix=/jenkins --httpListenAddress=127.0.0.1"
    

针对RHEL/CentOS系统:

  1. 编辑配置文件:

    sudo nano /etc/sysconfig/jenkins
    
  2. 修改JENKINS_ARGS添加前缀:

    JENKINS_ARGS="--prefix=/jenkins --httpListenAddress=127.0.0.1"
    
  3. 重启Jenkins使配置生效:

    sudo systemctl restart jenkins
    

3. 验证配置并重启Apache

  1. 先检查Apache配置是否有语法错误:
    sudo apache2ctl configtest
    
  2. 如果输出Syntax OK,重启Apache服务:
    sudo systemctl restart apache2
    

现在你应该可以通过https://jenkins.server.com/jenkins正常访问Jenkins了,同时你的WordPress站点依然能通过https://jenkins.server.com正常运行。

内容的提问来源于stack exchange,提问作者Knight Rider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:27:44