我正在尝试使用 Apache 为在我的服务器上本地运行的 Cloud9 实例设置反向代理。我有以下设置:
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://localhost:3131/
ProxyPassReverse / http://localhost:3131/
ServerAdmin [email protected]
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 从外部访问该网站时,我得到:
哎呀!谷歌浏览器找不到 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/)。