使用 ServerName 的 Cloud9 的 Apache 反向代理
我正在嘗試使用 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>