일부 예외가 있는 Apache 역방향 프록시 설정

일부 예외가 있는 Apache 역방향 프록시 설정

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.

관련 정보