Apache 反向代理設定(有一些例外)

Apache 反向代理設定(有一些例外)

我想在運行 ISPConfig 託管軟體的伺服器上安裝 Mattermost。 ISPConfig 有一個根據主機名稱自動取得和安裝 Letsencrypt 憑證的機制。為此,Letsencrypt 需要存取該/.well-known目錄(我猜)檢查一些驗證字串。

我的 Mattermost 系統在連接埠 8065 上運行,並使用與反向代理在同一伺服器上運行的 ISPConfig 託管環境來進行 SSL 卸載。

我正在按照以下說明進行操作https://docs.mattermost.com/configure/config-proxy-apache2.html這對於未加密的連線運作良好。

但一旦我嘗試獲取 SSL 證書,這就不再起作用了。我不完全確定發生了什麼,但我猜上面提到的程式碼正在代理所有流量到我的最重要的系統,而它不應該代理到目錄./well-known 的請求,這是LetsEncrypt 的東西所需要的。

聽起來合理嗎?如果是這樣,我怎樣才能使該./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.

相關內容