
ISPConfig 호스팅 소프트웨어를 실행하는 서버에 Mattermost를 설치하고 싶습니다. ISPConfig에는 호스트 이름을 기반으로 Letsencrypt 인증서를 자동으로 얻고 설치하는 메커니즘이 있습니다. 이를 위해 Letsencrypt는 /.well-known
디렉토리 에 대한 액세스가 필요합니다(아마도)일부 확인 문자열을 확인합니다.
내 Mattermost 시스템은 포트 8065에서 실행되고 있으며 SSL 오프로딩을 위해 역방향 프록시와 동일한 서버에서 실행되는 ISPConfig 호스팅 환경을 사용합니다.
나는 다음의 지시를 따르고 있었다.https://docs.mattermost.com/configure/config-proxy-apache2.html암호화되지 않은 연결에서는 제대로 작동합니다.
하지만 SSL 인증서를 얻으려고 하면 더 이상 작동하지 않습니다. 무슨 일이 일어나고 있는지 완전히 확신할 수는 없지만 위에서 언급한 코드는 모든 트래픽을 내 가장 중요한 시스템으로 프록시하는 반면, letsencrypt에 필요한 ./well-known 디렉토리에 대한 요청을 프록시해서는 안 된다고 생각합니다.
그게 합리적으로 들리나요? 그렇다면 ./well-known
프록시 기능에서 디렉터리를 어떻게 제외할 수 있습니까?
(아마도 이것은 전문가에게는 매우 쉬운 일이지만 어디서부터 시작해야 할지 잘 모르겠습니다. 아마도 이 역방향 프록싱이 어떻게 작동하는지와 모든 아파치 지시문이 정확히 무엇을 의미하는지 완전히 이해하지 못하기 때문일 수도 있습니다...)
다음은 표준 Apache 가상 호스트 구성에 대한 현재 수정 사항의 일부입니다.
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>
a 도 있습니다 . <LocationMatch>
나는 정규식 전문가는 아니지만, 약간의 검색 끝에 다음 지시문이 효과가 있다는 것을 알았습니다.
<LocationMatch "^(?:(?!\/\.well-known).)*$">
내 이해가 맞다면 이것은 로 시작하지 않는 모든 디렉토리와 일치합니다 /.well-known
.