我们在 下提供了一个 SVN 存储库svn.example.org
。现在我们想为该域添加 Let's Encrypt 证书 - 但是现在有一个问题。Let's Encrypt 通过将文件放入该虚拟主机的子文件夹(例如/.well-known/acme-challenge/…
)来验证域。Let's Encrypt 无法验证该文件,因为 Apache 正在为 下的 SVN 存储库提供服务svn.example.org
。
现在的问题是,是否可以配置 Apache,以便某些 URL 不由 SVN 存储库提供服务?目前,vhost 配置类似于以下内容:
DocumentRoot /var/www/vhosts/svn.example.org/
<Location />
DAV svn
SVNParentPath /var/www/vhosts/svn.example.org/httpdocs/
AuthType Basic
AuthName "SVN"
AuthUserFile /auth/svn.passwd
Require valid-user
</Location>
我不确定我必须做什么,以便svn.example.org/.well-known/…
Apache 能够以不同的方式提供请求。
答案1
我知道这应该是一条评论,但我的声誉还不够(目前)。您是否配置了其他网页?如果是,一个简单的Alias /.well-known/acme-challenge/ /path/to/your/challenge/directory
操作就可以了。
答案2
更新:这实际上不起作用,请参阅下面的评论。
现在就可以工作了,结合@Stephan的评论和RegEx,排除.well-known
SVN的路径(https://regex101.com/r/h8kDEc/1):
DocumentRoot /var/www/vhosts/svn.example.org/
Alias /.well-known/ /var/www/vhosts/svn.example.org/httpdocs/.well-known/
<LocationMatch ^/(?!\.well-known).*>
DAV svn
SVNParentPath /var/www/vhosts/svn.example.org/httpdocs/
AuthType Basic
AuthName "SVN"
AuthUserFile /auth/svn.passwd
Require valid-user
</LocationMatch>