Apache-2.4

Docker 容器的 Apache 反向代理

  • November 25, 2017

我有一個在 docker 容器上執行的網站,並且我在主機的 apache 上創建了一個 VirtualHost,它正在對容器進行反向代理(在主機的 8280 埠上)。所以我有:

<VirtualHost *:443>
   ServerName www.example.com
   DirectoryIndex index.php index.html
   SetOutputFilter SUBSTITUTE,DEFLATE

   ProxyPass / http://localname:8280/
   ProxyPassReverse / http://localname:8280/

   Substitute "s|http://localname:8280/|https://www.example.com/|i"

   SSLEngine on
   SSLProtocol all -SSLv2
   SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
   SSLCertificateKeyFile /path-to/privkey.pem
   SSLCertificateFile /path-to/cert.pem
   SSLCertificateChainFile /path-to/chain.pem

   <Proxy *>
       Order deny,allow
       Allow from all
       Allow from localhost
   </Proxy>
</VirtualHost>

<VirtualHost *:80>
   ServerName www.example.com
   ServerAlias www.example.com

   Redirect permanent / https://www.example.com/
</VirtualHost>

代理執行良好,我在瀏覽器中寫入 www.example.com 時有響應,但我的所有連結都指向http://localname:8280(如瀏覽器控制台所示)和混合內容錯誤,這就是為什麼我已經放置了 Substitute 指令,但它不起作用。

我正在使用 apache 文件中的 mod_substitute 配置。

https://httpd.apache.org/docs/2.4/mod/mod_substitute.html

但這不起作用,任何事情都會發生變化。docker 容器基於具有預設配置的 bitnami/apache 映像。

任何幫助,將不勝感激。

好的,我自己找到了答案。您只需在 Substitute 指令上添加以下行:

AddOutputFilterByType SUBSTITUTE text/html

引用自:https://serverfault.com/questions/884862