我一直在尝试创建3个不同的域名,链接到同一台机器上的3个不同的站点,2个可以正常工作但第3个不同的端口链接到第一个页面。
我的apache配置如下所示:
Listen 81
NameVirtualHost *:81
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/www
</VirtualHost>
<VirtualHost *:80>
ServerName www2.example.com
DocumentRoot /var/www/www2
</VirtualHost>
<VirtualHost *:81>
ServerName controlpanel.example.com
DocumentRoot /var/www/controlpanel
</VirtualHost>
我已经使用Bind9来设置域名。
www IN A 123.123.123.123
www2 IN A 123.123.123.123
controlpanel IN A 123.123.123.123
www和www2工作正常并显示正确的网站,但controlpanel.example.com也链接到第一个www网站。当我在ip,xxx.xxx.xxx.xxx:81上手动输入端口时,我得到了正确的链接。问题是我不知道自己做错了什么,这是我第一次尝试这样的事情。你有什么想法吗?
我也在旧的ubuntu 12.04服务器上运行它。
答案 0 :(得分:0)
如果您希望第三个虚拟主机同时出现端口81上的defautl和端口80上基于名称的选项:
更改
<VirtualHost *:81>
到
<VirtualHost *:80 *:81>
Apache首先找到具有最佳IP:基于PORT的匹配的虚拟主机集,然后如果NameVirtualHost也匹配,则开始查看该集中的ServerNames。
答案 1 :(得分:0)
关于您在上一个答案的评论中的位置:
您可以为controlpanel.example.com添加端口80虚拟主机并在其中放入一个语句,
Redirect / http://controlpanel.example.com:81
ServerName的目的不是通知浏览器您的网络服务器正在使用哪个端口。它用于基于名称的虚拟主机,并作为自引用链接的最后手段(开箱即用,自引用链接是使用客户端已经认为通过Host:header访问的任何内容生成的)
但对你的要求肯定有些奇怪。通常的动机是不使用自定义端口,如果是,则使用低端口寻址服务器并使用某个中介(负载均衡器,代理)重新映射。