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

Исключение Apache2.4 ProxyPass внутри блока Location не работает

При попытке заставить 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/... пока не будет достигнут предел перенаправления клиента. Журналы показывают, что это сгенерировано на внешнем сервере, а серверная часть никогда не получает запросов.

Если я заменю блок Location автономными директивами, он будет работать так, как ожидалось:

Alias /.well-known/acme-challenge /run/acme/.well-known/acme-challenge
ProxyPass /.well-known/acme-challenge !

Согласно ProxyPass В документации этот метод определения исключения должен работать - он очень хорошо согласуется с предоставленным примером конфигурации в конце этого раздела. Это просто сломано, или я что-то пропустил?

Перенаправления могут быть основной причиной, но я не могу найти никаких директив перенаправления или перезаписи в этой области, которые могут выдавать 301, и единственное упоминание index.html в .htaccess (его нет) или файлы конфигурации - это индекс каталога, который я пытался явно отключить с помощью Options -Indexes безрезультатно.

Вам не хватает косой черты в конце Alias. Завершающие косые черты должны совпадать.

<Location /.well-known/acme-challenge/>
    ProxyPass "!"
    Alias /run/acme/.well-known/acme-challenge/
</Location>