いくつかの例外を伴うApacheリバースプロキシのセットアップ

いくつかの例外を伴うApacheリバースプロキシのセットアップ

ISPConfigホスティングソフトウェアも実行しているサーバーにMattermostをインストールしたいと思います。ISPConfigには、ホスト名に基づいてLetsencrypt証明書を自動的に取得してインストールするメカニズムがあります。このためには、Letsencryptがディレクトリにアクセスする必要があります/.well-known(私は推測する)検証文字列を確認します。

私の Mattermost システムはポート 8065 で実行されており、SSL オフロード用のリバース プロキシと同じサーバー上で実行されている ISPConfig ホスティング環境を使用しています。

私は指示に従っていましたapache2 のプロキシサーバの設定暗号化されていない接続では正常に動作します。

しかし、SSL 証明書を取得しようとすると、これは機能しなくなります。何が起こっているのか完全にはわかりませんが、上記のコードはすべてのトラフィックを Mattermost システムにプロキシしていますが、letsencrypt に必要なディレクトリ ./well-known へのリクエストはプロキシしないはずです。

./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

関連情報