Настройка обратного прокси-сервера Apache с некоторыми исключениями

Настройка обратного прокси-сервера Apache с некоторыми исключениями

Я хотел бы установить Mattermost на своем сервере, также работающем на хостинговом ПО ISPConfig. ISPConfig имеет механизм для автоматического получения и установки сертификатов Letsencrypt на основе имени хоста. Для этого Letsencrypt необходим доступ к /.well-knownкаталогу(Наверное)для проверки наличия некоторой проверочной строки.

Моя система Mattermost работает на порту 8065 и использует мою среду хостинга ISPConfig, работающую на том же сервере, что и обратный прокси-сервер для разгрузки SSL.

Я следовал инструкциям наhttps://docs.mattermost.com/configure/config-proxy-apache2.htmlкоторый отлично работает для незашифрованных соединений.

Но как только я пытаюсь получить SSL-сертификат, это больше не работает. Я не совсем уверен, что происходит, но предполагаю, что вышеупомянутый код проксирует ВЕСЬ трафик в мою систему mattermost, в то время как он НЕ должен проксировать запросы в каталог ./well-known, который нужен для letsencrypt.

Звучит ли это разумно? Если да, то как мне освободить ./well-knownкаталог от функции проксирования?

(Возможно, для эксперта это довольно просто, но я не знаю, с чего начать — возможно, потому, что я не до конца понимаю, как работает этот обратный проксирование и что именно означают все эти директивы Apache...)

Вот фрагмент моих текущих изменений стандартной конфигурации Apache vhost:

ServerAdmin [email protected]
ProxyPreserveHost On
RewriteEngine On

RewriteCond %{REQUEST_URI} /api/v[0-9]+/(users/)?websocket [NC]
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L]

ProxyPass /.well-known/ !  # <-- I inserted this line, but this does not seem to work...

<Location />
      Require all granted
      ProxyPass http://127.0.0.1:8065/
      ProxyPassReverse http://127.0.0.1:8065/
      ProxyPassReverseCookieDomain 127.0.0.1 mattermost.mydomain.com
</Location>

(Я украл вышеуказанную модификацию изhttps://stackoverflow.com/questions/44651809/no-lets-encrypt-renewal-with-reverse-proxy-in-ispconfig3, но это, похоже, не работает. Может быть, из-за оператора <Location />? Но как указать весь каталог /без /well-knownв моем <Location>операторе?)

Есть идеи, как решить мою проблему?

решение1

Может быть, я сдался слишком рано. Кажется, я понял, как решить эту проблему. Помимо <Location>, есть еще , <LocationMatch>который работает с регулярными выражениями. Я не эксперт по регулярным выражениям, но после некоторых раздумий я обнаружил, что следующая директива сработала:

<LocationMatch "^(?:(?!\/\.well-known).)*$">

Если я правильно понимаю, это соответствует всем каталогам, не начинающимся с /.well-known.

Связанный контент