我正在尝试使用 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 从外部访问该网站时,出现以下信息:
糟糕!Google Chrome 找不到 cloud9.mydomain.org
您的意思是:mydomain.org
这是 Chrome 无法连接时显示的默认页面。同样,我没有在 access.log 或 error.log 中看到任何错误,除非出于某种原因它没有记录在同一个地方。我将进入/var/log/apache2
并执行一个操作ls -lart
以确保我看到的是最新的日志文件。
答案1
<VirtualHost *.80>
- 将其改为<VirtualHost *:80>
。
这可能是全部需要的,但如果不是,您能提供输出吗apachectl -S
?
答案2
虽然不太好,但是这对 HTTP 和 SSL 都有效,并且不会对 Cloud9 进行更改。
必要的 Apache 模块:修改代理服务器(我认为在 Apache 2.4 中可用,并且有针对 Apache 2.2.x 构建的教程,例如http://www.amoss.me.uk/2013/06/apache-2-2-websocket-proxying-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>