我喜欢时不时地做一些测试,也喜欢用不同的语言尝试新事物,但我只有 1 台服务器。
我想从 1 台服务器(最好是 apache,因为目前是 wordpress 和一些其他 php 内容)为我的主要网站提供服务,从另一台服务器(WEBRick、django,也许还有其他)为其他页面提供服务。
它们将在同一台主机上运行,我希望它们都在端口 80 上运行。除此之外,我可以做任何最好的事情。子域名可以工作(目前我使用 phusion 乘客在子域名上使用 rails 内容),不同的服务器端文件夹也可以工作(example.com/stuff)。
假设使用域/子域完成所有这些操作最容易,这不会有问题。我只需要知道如何将对特定子域的请求发送到不同的服务器。我还可以更改 iptables 配置(不确定这是否有帮助)。
答案1
为了使用两个不同的 Web 服务器,您需要处理 Apache 反向代理。将主服务器(例如 Apache)设置为端口 80,并让其管理所有主站点。为其他站点设置另一个 Web 服务器(nginx)在另一个端口(例如 81)上。
在您的 Apache 配置中,您需要设置一个 VirtualHost,以 ReverseProxy 到其他 Web 服务器。例如:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ProxyPreserveHost On
ProxyPass / http://localhost:81/
ProxyPassReverse / http://localhost:81/
</VirtualHost>
此配置的作用是告诉 Apache 查看 localhost:81 上的 Web 服务器,并将提供的页面代理过来。ProxyPreserveHost 很重要,因为它将主机名传递给其他 Web 服务器,因此您也可以在那里拥有多个 VirtualHosts。
答案2
您可以通过以下方式执行此操作:反向代理在您的服务器之前,当特定站点的请求发送到该代理时,直接到正确的服务器。
您可以使用 Apache 的 mod_proxy:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
或者你可以尝试一些更轻量级的东西,比如 ngnix。