
我使用 Apache 使用 SSL 憑證在我的家庭伺服器上的連接埠 443 上為全球多個網站提供服務。昨晚我安裝了一個 Linux 二進位文件,該二進位檔案僅在透過其設定檔定義的連接埠上為網站提供服務。我不可能讓 Apache 直接為該網站提供服務。
所以這個網站託管在http://127.0.0.1:8081/但我想將它隱藏在 Apache 443 後面,以便我可以通過https://myserver.duckdns.org/webapp/
到目前為止,我已經在我的網站設定檔中嘗試過此操作,但它沒有起作用:
ProxyRequests off
<Proxy *>
allow from all
</Proxy>
RewriteEngine On
RewriteRule ^/(.*) /webapp/$1 [P]
<Location /webapp/>
ProxyPass http://127.0.0.1:8081/
ProxyPassReverse http://127.0.0.1:8081/
</Location>
知道我該怎麼做嗎?
我以為我可以使用 ProxyPass 和 RewriteRules 來做到這一點,但我似乎無法讓它正常工作。
非常感謝!
答案1
您的重寫規則 a) 目標錯誤,2) 是多餘的。
RewriteRule with[P]
設計用作選擇到 ProxyPass,而不是與它一起。 [P] 規則的重寫目標將是遠端 Web 應用程式 URL,而不是本機 URL。例如,您可以使用這個:
RewriteRule ^/webapp/(.*) http://127.0.0.1:8081/$1 [P]
或者這:
ProxyPass /webapp/ http://127.0.0.1:8081/
或者這:
<Location /webapp/>
ProxyPass http://127.0.0.1:8081/
</Location>
(注意:Apache 文件建議盡可能使用 ProxyPass。)
你的<Proxy *>
塊也是不必要的,因為它只適用於向前代理,客戶端指定代理目標(您已停用)。