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

Apache反向代理配置排除/.well-known目录以支持Let's Encrypt证书验证的问题

Apache反向代理配置排除/.well-known目录以支持Let's Encrypt证书验证的问题

你猜的完全没错!问题的核心就是你的反向代理规则把所有请求都转发到了Mattermost,包括Let's Encrypt验证需要的/.well-known目录请求。而你之前加的ProxyPass /.well-known/ !没生效,是因为<Location />块的优先级比单独的ProxyPass指令更高,后面的代理规则直接覆盖了前面的排除规则。

下面给你两种可行的解决方案,选一种适合你的就行:

方案一:在块内添加排除规则

既然你用了<Location />来统一配置代理,那可以直接在这个块里先声明排除规则,让Apache优先处理/.well-known的请求:

ServerAdmin my.address@mydomain.com

ProxyPreserveHost On

RewriteEngine On

# WebSocket的代理规则保持不变
RewriteCond %{REQUEST_URI} /api/v[0-9]+/(users/)?websocket [NC]
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L]

<Location "/">
    Require all granted
    # 关键:先排除/.well-known目录的代理请求
    ProxyPass "/.well-known" !
    # 其余请求正常代理到Mattermost
    ProxyPass http://127.0.0.1:8065/
    ProxyPassReverse http://127.0.0.1:8065/
    ProxyPassReverseCookieDomain 127.0.0.1 mattermost.mydomain.com
</Location>

原理是在<Location>块内,ProxyPass的否定规则会优先匹配,所以/.well-known下的请求会直接由Apache本地处理,不会转发到Mattermost,Let's Encrypt就能顺利完成验证了。

方案二:移除块,用RewriteRule全局排除

如果你不想用<Location>块,也可以通过Rewrite规则先拦截/.well-known的请求,再处理代理:

ServerAdmin my.address@mydomain.com

ProxyPreserveHost On

RewriteEngine On

# 优先排除/.well-known目录,直接由Apache本地处理
RewriteRule ^/.well-known/ - [L]

# WebSocket代理规则保持不变
RewriteCond %{REQUEST_URI} /api/v[0-9]+/(users/)?websocket [NC]
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L]

# 其余所有请求代理到Mattermost
ProxyPass / http://127.0.0.1:8065/
ProxyPassReverse / http://127.0.0.1:8065/
ProxyPassReverseCookieDomain 127.0.0.1 mattermost.mydomain.com

这种方式更简洁,通过RewriteRule ^/.well-known/ - [L]让Apache直接跳过代理流程,处理该目录的请求。

最后要做的几件事:

  1. 修改完配置后,重启Apache服务生效:
    sudo systemctl restart apache2
    
  2. 手动测试一下访问https://mattermost.mydomain.com/.well-known/acme-challenge/测试文件名,确认能正常返回内容(如果ISPConfig已经自动生成了验证文件的话)。
  3. 重新触发ISPConfig的Let's Encrypt证书申请,或者手动运行证书获取命令。

备注:内容来源于stack exchange,提问作者TomS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:27:49