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系统:
- 编辑Jenkins配置文件:
sudo nano /etc/default/jenkins - 找到
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系统:
编辑配置文件:
sudo nano /etc/sysconfig/jenkins修改
JENKINS_ARGS添加前缀:JENKINS_ARGS="--prefix=/jenkins --httpListenAddress=127.0.0.1"重启Jenkins使配置生效:
sudo systemctl restart jenkins
3. 验证配置并重启Apache
- 先检查Apache配置是否有语法错误:
sudo apache2ctl configtest - 如果输出
Syntax OK,重启Apache服务:sudo systemctl restart apache2
现在你应该可以通过https://jenkins.server.com/jenkins正常访问Jenkins了,同时你的WordPress站点依然能通过https://jenkins.server.com正常运行。
内容的提问来源于stack exchange,提问作者Knight Rider
相关产品推荐
相关产品推荐

