使用 ServerName 为 Cloud9 提供 Apache 反向代理

使用 ServerName 为 Cloud9 提供 Apache 反向代理

我正在尝试使用 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>

相关内容