当尝试让 Let's Encrypt Certbot 在托管反向代理内容的本地服务器上工作时,我无法让本地异常在块内工作Location
。httpd.conf
片段:
SSLProxyEngine on
<Location "/">
ProxyPass "https://internal.host/"
ProxyPassReverse "https://internal.host/"
</Location>
Include /etc/apache2/vhosts.d/01_acme.include
将文件放置在块01_acme.include
上方或下方均Location
没有效果。
文件01_acme.include
:
<Location /.well-known/acme-challenge/>
ProxyPass "!"
Alias /run/acme/.well-known/acme-challenge
</Location>
我在该目录中放置了一个名为 的文本文件date
。尝试检索此文件会导致无限的 301 重定向,date/index.html/index.html/...
直到达到客户端的重定向限制。日志显示这是在前端服务器上生成的,后端从未收到请求。
如果我用独立指令替换位置块,它将按预期运行:
Alias /.well-known/acme-challenge /run/acme/.well-known/acme-challenge
ProxyPass /.well-known/acme-challenge !
根据代理通行证文档中这种定义异常的方法应该有效 - 它与该部分末尾提供的示例配置非常吻合。这只是坏了,还是我遗漏了什么?
重定向可能是根本原因,但我在这个范围内找不到任何可能引发 301 的重定向或重写指令,并且在.htaccess
(没有)或配置文件中唯一提及的 index.html 是目录索引,我曾尝试明确禁用它,但Options -Indexes
没有效果。
答案1
您在 中缺少尾部斜杠Alias
。尾部斜杠必须匹配。
<Location /.well-known/acme-challenge/>
ProxyPass "!"
Alias /run/acme/.well-known/acme-challenge/
</Location>