Назад | Перейти на главную страницу

apache 2.4 + gitlab + letsencrypt не работает

Я использую следующую конфигурацию для включения поддержки letsencrypt на всех vhosts:

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>

это отлично работает для всех хостов (в основном php или статических сайтов), кроме gitlab

Я использую этот конфиг: 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. В DocumentRoot что-то вне /var/www/letsencrypt
  2. gitlab-workhorse переписывает запрос

Псевдоним должен разрешить первую проблему, но это дополнение должно позволить GitLab не переписывать хорошо известный запрос. Согласно комментарию:

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

Gitlab уже написал правило для исключения, поэтому мы можем добавить к нему.

Добавьте следующую строку перед RewriteRule

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

Это добавляет условие к НЕ перезаписывать запросы, которые содержат. Well-known. Перезагрузите Apache и проверьте.