apache 2.4 + gitlab + letsencrypt 不起作用

apache 2.4 + gitlab + letsencrypt 不起作用

我使用以下配置在所有 vhosts 上启用 letsencrypt 支持:

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>

这对于除 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>

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

答案1

我认为这里有两个问题:

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

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

#Forward all requests to gitlab-workhorse except existing files like error documents

Gitlab 已经编写了排除规则,因此我们可以对其进行添加。

在之前添加以下行RewriteRule

RewriteCond %{REQUEST_URI} !^.*/\.well-known/.*$ [NC]

这添加了一个条件,即不重写包含 .well-known 的请求。重新启动 Apache 并测试。

相关内容