单个静态IP后面的不同机器上的多个Web服务器

时间:2016-02-29 19:04:54

标签: apache proxy dns virtualhost static-ip-address

我遇到的情况是,我工作的公司希望将其网络服务器分布在虚拟机上,而不是依靠一个物理盒来完成所有工作。我们当前的设置看起来像这样:

example.com → static IP → internal firewall (only 1 machine may receive port 80 traffic) → 192.168.1.100 (our production box)

example1.com, example2.com, etc... → same as above

我们的生产框运行Apache,并使用VirtutalHost将传入名称分隔到适当的本地文件夹。这可以按预期工作,但我们希望将一些主机从生产中移除,以解决性能和安全问题。类似于以下设置:

*.example.com → static IP → firewall → 192.168.1.100 (Production)
jira.example.com -> static IP -> firewall -> 192.168.1.100 -> 192.168.1.120
*.example1.com → static IP → firewall → 192.168.1.100 → 192.168.1.111 (Wordpress-1)
*.example2.com → static IP → firewall → 192.168.1.100 → 192.168.1.112 (Wordpress-2)
etc…..

我们在192.168.1.100上使用VirtualHost文件尝试了类似于以下的内容:

<VirtualHost *:*>
    ServerName example.com
      ...
</VirtualHost>

<VirtualHost jira.example.com:*>
    ServerName jira.example.com
      ...
    ProxyPass         /  http://192.168.1.120:80/
    ProxyPassReverse  /  http://192.168.1.120:80/
</VirtualHost>

<VirtualHost example1.com:*>
    ServerName example1.com
      ...
    ProxyPass         /  http://192.168.1.111:80/
    ProxyPassReverse  /  http://192.168.1.111:80/
</VirtualHost>

<VirtualHost example2.com:*>
    ServerName example2.com
      ...
    ProxyPass         /  http://192.168.1.112:80/
    ProxyPassReverse  /  http://192.168.1.112:80/
</VirtualHost>

这部分工作 - 我能够使用example1.com与Wordpress-1交谈。但是,重定向会导致超链接指向example.com,这会破坏网站。

当我查看DNS时,似乎它可能是更好的选择。是否可以让域名提供商(在本例中为GoDaddy)指向防火墙后面的DNS服务器,然后适当地引导流量?像这样:

hostname → static IP → firewall → 192.168.1.100 (DNS) → webserver assigned to hostname

example.com:
NS  ns1.example.com.
ns1.example.com.    A   192.168.1.100
www A   192.168.1.100
jira.example.com. A 192.168.1.120   

example1.com:
NS  ns1.example1.com.
ns1.example1.com.   A   192.168.1.100
www A   192.168.1.111   

example2.com:
NS  ns1.example2.com.
ns1.example2.com.   A   192.168.1.100
www A   192.168.1.112

1 个答案:

答案 0 :(得分:0)

Digital Ocean上的本指南介绍了如何使用Apache2配置代理:https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension

做了一些清理后,我能够找出问题所在。我的一个虚拟主机使用443,但其他人没有。但是,Wordpress希望使用https进行管理员登录,该登录重定向到使用SSL的主机。基本上,当涉及到服务器时,SSL是一个全有或全无的游戏。假设您只使用端口80,则以下方法可行:

<VirtualHost *:80>
    ServerName example.com
      ...
</VirtualHost>

# Note: This assumes your Jira installation is running on port 80 
<VirtualHost *:80>
    ServerName jira.example.com
      ...
    ProxyPass         /  http://192.168.1.120
    ProxyPassReverse  /  http://192.168.1.120
</VirtualHost>

<VirtualHost *:80>
    ServerName example1.com
      ...
    ProxyPass         /  http://192.168.1.111
    ProxyPassReverse  /  http://192.168.1.111
</VirtualHost>

<VirtualHost *:80>
    ServerName example2.com
      ...
    ProxyPass         /  http://192.168.1.112
    ProxyPassReverse  /  http://192.168.1.112
</VirtualHost>