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