apache 2.4 + gitlab +letsencrypt 不工作

kan*_*nix 4 apache-2.4 lets-encrypt

我使用以下配置在所有虚拟主机上启用 letencrypt 支持:

ProxyPass /.well-known/acme-challenge !

Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/

<Directory "/var/www/letsencrypt/.well-known/acme-challenge/">
    Options None
    AllowOverride None
    ForceType text/plain
    RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)" 
</Directory>
Run Code Online (Sandbox Code Playgroud)

这适用于除 gitlab 之外的所有主机(主要是 php 或静态站点)

我正在使用这个配置:https : //github.com/gitlabhq/gitlab-recipes/blob/master/web-server/apache/gitlab-ssl-apache24.conf

我的猜测是这个配置部分有问题:

<Location />
    # New authorization commands for apache 2.4 and up
    # http://httpd.apache.org/docs/2.4/upgrading.html#access
    Require all granted

    #Allow forwarding to gitlab-workhorse
    ProxyPassReverse http://127.0.0.1:8181
    ProxyPassReverse http://YOUR_SERVER_FQDN/
  </Location>
Run Code Online (Sandbox Code Playgroud)

但解决这个问题的最佳方法是什么?

Jam*_*ite 6

我认为这里有两个问题:

  1. DocumentRoot是外面的东西/var/www/letsencrypt
  2. gitlab-workhorse 正在重写请求

别名的东西应该解决第一个问题,但是这个添加应该允许 .well-known 请求不被 GitLab 重写。根据评论:

#Forward all requests to gitlab-workhorse except existing files like error documents
Run Code Online (Sandbox Code Playgroud)

Gitlab 已经写了排除规则,所以我们可以添加进去。

在之前添加以下行 RewriteRule

RewriteCond %{REQUEST_URI} !^.*/\.well-known/.*$ [NC]
Run Code Online (Sandbox Code Playgroud)

这增加了不重写包含 .well-known 请求的条件。重启Apache并测试。