
Me gustaría instalar Mattermost en mi servidor y que también ejecute el software de alojamiento ISPConfig. ISPConfig tiene un mecanismo para obtener e instalar automáticamente certificados Letsencrypt según el nombre de host. Para ello, Letsencrypt necesita acceso al /.well-known
directorio.(Supongo)para comprobar si hay alguna cadena de verificación.
Mi sistema Mattermost se ejecuta en el puerto 8065 y utiliza mi entorno de alojamiento ISPConfig que se ejecuta en el mismo servidor que el proxy inverso para la descarga de SSL.
Estaba siguiendo las instrucciones dehttps://docs.mattermost.com/configure/config-proxy-apache2.htmlque funciona bien para conexiones no cifradas.
Pero tan pronto como intento obtener un certificado SSL, esto ya no funciona. No estoy completamente seguro de lo que está pasando, pero supongo que el código mencionado anteriormente envía TODO el tráfico a mi sistema más importante, mientras que NO debería enviar solicitudes al directorio ./well-known que es necesario para las cosas de letsencrypt.
¿Suena eso razonable? Si es así, ¿cómo puedo eximir al ./well-known
directorio de la función de proxy?
(Tal vez esto sea bastante fácil para un experto, pero realmente no sé por dónde empezar, tal vez porque no entiendo completamente cómo funciona este proxy inverso y qué significan exactamente todas las directivas de Apache...)
Aquí hay un fragmento de mis modificaciones actuales a la configuración estándar de 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>
(He robado la modificación anterior dehttps://stackoverflow.com/questions/44651809/no-lets-encrypt-renewal-with-reverse-proxy-in-ispconfig3, pero eso no parece funcionar. ¿Quizás por la <Location />
declaración? ¿Pero cómo especificar todo el directorio /
sin estar /well-known
en mi <Location>
declaración?)
¿Alguna idea sobre cómo resolver mi problema?
Respuesta1
Quizás me estaba dando por vencido demasiado pronto. Creo que descubrí cómo resolver el problema. Además de <Location>
, también hay una <LocationMatch>
que funciona con expresiones regulares. No soy un experto en expresiones regulares, pero después de probar un poco, descubrí que la siguiente directiva funcionó:
<LocationMatch "^(?:(?!\/\.well-known).)*$">
Si mi comprensión es correcta, esto coincide con todos los directorios que no comienzan con /.well-known
.