我目前有一个安装了 Apache 并且运行良好的 Ubuntu 网络服务器,我想做两件事,我想设置另外两个盒子,它们位于同一个 WAN 地址上,但当然有单独的本地地址。
假设我有 www.example.com 作为主服务器,我还希望在不同的机器上安装 test.example.com,在第三个机器上安装 fun.example.com。
我该如何实现这个目标?
答案1
来自 George Kourouleas 提供的链接
是我所寻找的
NameVirtualHost *:80
<VirtualHost *:80>
ServerName foo.com
DocumentRoot /srv/www/default
<Location "/">
Order Deny, Allow
Deny from all
Allow from all
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerName fooa.com
ProxyPreserveHost on
ProxyPass / http://server2/
ProxyPassReverse / http://server2/
</VirtualHost>
<VirtualHost *:80>
ServerName foob.com
ServerAlias fooc.com
ProxyPreserveHost on
ProxyPass / http://server3/
ProxyPassReverse / http://server3/
</VirtualHost>
完全符合我的要求以及 mod_proxy
答案2
笔记
在 Apache 服务器上创建虚拟主机配置不会奇迹般地导致为这些主机名创建 DNS 条目。您必须在 DNS 中拥有这些名称,解析为您的 IP 地址,否则其他人将无法看到您的网站。您可以将条目放入主机文件中进行本地测试,但这仅适用于具有这些主机条目的机器。
# Ensure that Apache listens on port 80
Listen 80
<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example.com
# Other directives here
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.example.org
# Other directives here
</VirtualHost>
星号匹配所有地址,因此主服务器不处理任何请求。由于 ServerName 为 www.example.com 的虚拟主机在配置文件中位于首位,因此它具有最高优先级,可视为默认或主服务器。这意味着,如果收到的请求与指定的 ServerName 指令之一不匹配,则将由第一个 VirtualHost 处理。
亲切的问候。