Apache-2.2

使用 ServerName 的 Cloud9 的 Apache 反向代理

  • October 1, 2013

我正在嘗試使用 Apache 為在我的伺服器上本地執行的 Cloud9 實例設置反向代理。我有以下設置:

<VirtualHost *:80>
 ProxyPreserveHost On
 ProxyPass / http://localhost:3131/
 ProxyPassReverse / http://localhost:3131/
 ServerAdmin cloud9@mydomain.org
 ServerName cloud9.mydomain.org
</VirtualHost>

我還嘗試重新排序指令,以便首先出現 ServerAdmin 和 ServerName。到目前為止,如果我點擊http://cloud9.mydomain.org,我會收到一個瀏覽器錯誤,說它無法連接。Apache 的 access.log 或 error.log 中也沒有任何記錄。我在想我錯過了一些東西,但我不確定那個失去的部分可能是什麼。我也不知道我是否在正確的地方尋找日誌。Cloud9 程序已啟動,並且似乎在 3131 埠上執行。

我不打算完全開放地執行 Cloud9。我所追求的最終目標是最終通過 SSL 使用一些身份驗證(可能是基本身份驗證)來託管 Cloud9,但我想在我開始將 SSL 和身份驗證添加到組合中之前,我可能應該先讓基礎知識工作。

更新 輸出apachectl -S

# apachectl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
        default server www.mydomain.org (/etc/apache2/sites-enabled/000-default:1)
        port 80 namevhost www.mydomain.org (/etc/apache2/sites-enabled/000-default:1)
        port 80 namevhost wp.mydomain.org (/etc/apache2/sites-enabled/001-wordpress:1)
        port 80 namevhost blog.mydomain.org (/etc/apache2/sites-enabled/001-wordpress:22)
        port 80 namevhost cloud9.mydomain.org (/etc/apache2/sites-enabled/003-cloud9:1)
Syntax OK

輸出curl -I cloud9.mydomain.org

curl: (6) Couldn't resolve host 'cloud9.mydomain.org'

輸出curl -I localhost:3131

HTTP/1.1 403 Forbidden
Content-Type: text/plain
Content-Length: 9
Set-Cookie: cloud9.sid.3131=bqk4zxV4ETq9rrO79E4mkJn9.YW7gMDRCsOO95utQJy1mYm8LfTfZC%2F7Fx59DeFRFDpU; path=/; expires=Thu, 19 Sep 2013 02:07:41 GMT; httpOnly
Date: Wed, 18 Sep 2013 22

當我嘗試使用 Chrome 從外部訪問該網站時,我得到:

哎呀!Google瀏覽器找不到 cloud9.mydomain.org

您的意思是:mydomain.org

這是 Chrome 無法連接時顯示的預設頁面。同樣,我在 access.log 或 error.log 中看不到任何錯誤,除非由於某種原因它沒有在同一個地方登錄。我將進入/var/log/apache2並做一個ls -lart以確保我看到最新的日誌文件。

<VirtualHost *.80>- 將其更改為<VirtualHost *:80>.

這可能是所有需要的,但如果沒有,你能提供輸出apachectl -S嗎?

不漂亮,但這適用於對 Cloud9 的 HTTP 和 SSL wo/ 更改。

必要的 Apache 模組:mod_proxy_wstunnel(我認為在 Apache 2.4 中可用,並且為 Apache 2.2.x 建構的教程可用,例如http://www.amoss.me.uk/2013/06/apache-2-2-websocket-代理-ubuntu-mod_proxy_wstunnel/)。

ProxyPreserveHost On

RewriteEngine On
RewriteCond %{QUERY_STRING} transport=polling
RewriteRule ^(.*)smith.io(.*) /polling [P]

<Location />
  ProxyPass http://localhost:3131/
  ProxyPassReverse http://localhost:3131/
</Location>
<Location /smith.io>
  ProxyPass ws://localhost:3131/smith.io
  ProxyPassReverse ws://localhost:3131/smith.io
</Location>
<Location /polling>
  ProxyPass http://localhost:3131/smith.io/server
  ProxyPassReverse http://localhost:3131/smith.io/server
</Location>

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