Apache-2.4

Apache ProxyPass Docker 容器返回 503

  • August 20, 2017

我被困在容器化虛擬主機上。設置如下:

mydomain.com

  • Ubuntu VPS(digitalOcean,用於上下文),Docker 預安裝

    • Apache容器(反向代理),來賓埠 80 到主機 80
    • Web-app 容器(執行 apache),來賓埠 80 到主機 8081

Apache 執行良好,apache 資訊頁面顯示在 mydomain.com 和 web-app 顯示在 mydomain.com:8081

問題是試圖通過 ProxyPass sub.mydomain.com 為 mydomain.com:8081 提供服務

我在Apache容器中設計了以下站點可用/sub.mydomain.com.conf。

<VirtualHost *:80>
ServerName sub.mydomain.com
ProxyPreserveHost on
ProxyRequests off
<Proxy *>
   Order deny,allow
   Allow from all
</Proxy>
ProxyPass           "/" "http://localhost:8081/" retry=0
ProxyPassReverse    "/" "http://localhost:8081/"

但是,sub.mydomain.com 返回 503 錯誤。

我還使用 digitalOcean 添加了以下 DNS 記錄: - CNAME:*.mydomain.com 是 mydomain.com 的別名 - A:sub.mydomain.com 指向

$$ DROPLET IP $$ 我也試過:替換’localhost’:

ProxyPass           "/" "http://localhost:8081/" retry=0
ProxyPassReverse    "/" "http://localhost:8081/"

使用mydomain.comDROPLET IP以及

$$ gateway $$從Apache容器route內部執行返回的 ip 。更改為這些值會產生相同的 503 錯誤,或者導致頁面不斷載入,既不返回錯誤也不返回請求的頁面。我不知道接下來要嘗試什麼,感謝您的幫助。有很多不同的設置,我認為更有經驗的人可能能夠指出我哪裡出錯了。提前致謝!

在代理容器中,您不能使用 localhost:8081 作為代理地址。localhost 實際上是容器本身的環回地址,而不是您的主機伺服器,並且那裡沒有監聽埠 8081(導致 503)。

我的建議是僅將 docker 用於您的服務,並使用標準的 apache(甚至更好的 nginx)進行代理。

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