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

Ubuntu Apache配置:将所有HTTP请求重定向到HTTPS,排除Jenkins

解决方案

要实现“所有HTTP请求重定向到HTTPS,仅Jenkins请求除外”的需求,你需要用Apache的mod_rewrite模块添加条件判断(替换原有的全局Redirect指令,因为它无法设置例外规则),具体操作如下:

1. 启用mod_rewrite模块

在Ubuntu上执行以下命令启用模块,然后重启Apache:

sudo a2enmod rewrite
sudo systemctl restart apache2

2. 修改HTTP虚拟主机配置

将原有的<VirtualHost *:80>配置替换为以下内容:

<VirtualHost *:80>
   ServerName example.com
   ServerAlias www.example.com

   # 开启Rewrite引擎
   RewriteEngine On

   # 规则:根据Jenkins的访问方式设置例外
   # 情况1:Jenkins通过80端口的特定路径访问(如http://www.example.com/jenkins)
   # 添加条件:请求路径不以/jenkins开头时,才执行重定向
   RewriteCond %{REQUEST_URI} !^/jenkins
   RewriteRule ^(.*)$ https://www.example.com$1 [R=301,L]

   # (可选)若需将/jenkins路径反向代理到本地8080的Jenkins服务
   ProxyPass /jenkins http://localhost:8080/jenkins
   ProxyPassReverse /jenkins http://localhost:8080/jenkins

   # 情况2:Jenkins直接监听8080端口(如http://www.example.com:8080)
   # 此场景下8080端口的请求不会经过Apache的80端口虚拟主机,原重定向规则不会影响它
   # 只需确保Jenkins正常监听8080即可,无需额外修改Apache配置
</VirtualHost>

关键说明

  • RewriteCond %{REQUEST_URI} !^/jenkins:指定当请求路径不是以/jenkins开头时,才触发后续重定向。
  • [R=301,L]:R=301代表永久重定向,L表示这是最后一条规则,匹配后不再执行后续规则。

验证配置

修改完成后重启Apache:

sudo systemctl restart apache2

测试效果:

  • 访问http://www.example.com/:会自动跳转到https://www.example.com/
  • 访问http://www.example.com/jenkins(或http://www.example.com:8080):不会被重定向,可正常访问Jenkins

内容的提问来源于stack exchange,提问作者Minny Joseph

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:25:32