不同端口上的Apache不同站点,仍然链接到同一站点。 Bind9用于域名

时间:2014-12-10 19:49:30

标签: apache apache2 port bind virtualhost

我一直在尝试创建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服务器上运行它。

2 个答案:

答案 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访问的任何内容生成的)

但对你的要求肯定有些奇怪。通常的动机是不使用自定义端口,如果是,则使用低端口寻址服务器并使用某个中介(负载均衡器,代理)重新映射。