
Gostaria de instalar o Mattermost em meu servidor que também executa o software de hospedagem ISPConfig. ISPConfig possui um mecanismo para obter e instalar automaticamente certificados Letsencrypt com base no nome do host. Para isso, Letsencrypt precisa de acesso ao /.well-known
diretório(Eu acho)para verificar alguma string de verificação.
Meu sistema Mattermost está rodando na porta 8065 e usa meu ambiente de hospedagem ISPConfig rodando no mesmo servidor que o proxy reverso para descarregamento de SSL.
Eu estava seguindo as instruções emhttps://docs.mattermost.com/configure/config-proxy-apache2.htmlque está funcionando bem para conexões não criptografadas.
Mas assim que tento obter um certificado SSL, isso não funciona mais. Não tenho certeza do que está acontecendo, mas acho que o código mencionado acima está fazendo proxy de TODO o tráfego para o meu sistema mais importante, embora NÃO deva fazer proxy de solicitações para o diretório ./well-known que é necessário para o material letsencrypt.
Isso parece razoável? Em caso afirmativo, como posso isentar o ./well-known
diretório da função de proxy?
(Talvez isso seja bastante fácil para um especialista, mas eu realmente não sei por onde começar - talvez porque eu não entenda completamente como esse proxy reverso funciona e o que todas as diretivas do Apache significam exatamente...)
Aqui está um trecho das minhas modificações atuais na configuração padrão do 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>
(Eu roubei a modificação acima dehttps://stackoverflow.com/questions/44651809/no-lets-encrypt-renewal-with-reverse-proxy-in-ispconfig3, mas isso não parece funcionar. Talvez por causa da <Location />
declaração? Mas como especificar o diretório inteiro /
sem /well-known
na minha <Location>
declaração?)
Alguma idéia de como resolver meu problema?
Responder1
Talvez eu estivesse desistindo muito cedo. Acho que descobri como resolver o problema. Além de <Location>
, há também um <LocationMatch>
que funciona com expressões regulares. Não sou um especialista em expressões regulares, mas depois de algumas brincadeiras, descobri que a seguinte diretiva funcionou:
<LocationMatch "^(?:(?!\/\.well-known).)*$">
Se meu entendimento estiver correto, isso corresponde a todos os diretórios que não começam com /.well-known
.