在单个 Linux 服务器上为每个网站设置一个 IP 地址?

在单个 Linux 服务器上为每个网站设置一个 IP 地址?

我正在尝试让同一台服务器上的两个网站使用不同的 IP 地址。我已经设置了虚拟 IP 并设置了虚拟主机。添加接口后我重新启动了网络,添加 vhost 后重新启动了 apache。

但是,第二个站点的默认 IP 地址仍在解析中。我做错了什么?


服务器

CentOS 版本 6.3(el6.x86_64 GNU/Linux)


接口配置

eth0      Link encap:Ethernet  
          inet addr:12.34.567.89  Bcast:12.34.567.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


eth0:1    Link encap:Ethernet 
          inet addr:12.34.567.90  Bcast:12.34.567.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

HTTP 配置文件

NameVirtualHost 12.34.567.89
NameVirtualHost 12.34.567.90

<VirtualHost 12.34.567.89>
    DocumentRoot  /var/www/html
    ServerName website1.com
</VirtualHost>

<VirtualHost 12.34.567.90>
    DocumentRoot /var/www/html
    ServerName website2.com
</VirtualHost>

# ping website2.com
PING website2.com (12.34.567.89) 56(84) bytes of data.

如果我浏览 12.34.567.90,它会指向错误的网站:website1.com 而不是 website2.com

我已经为此努力了好几个星期,如能得到任何帮助我将非常感激。

注意:特定 IP 地址已被简化,并且不相关的内容已被删除。

答案1

# ping website2.com
PING website2.com (12.34.567.89) 56(84) bytes of data.

主机名解析的内容不受 Apache 配置的影响,而仅受域的 DNS 记录的影响。

根据ping,website2.com 解析为 12.34.567.89,但 12.34.567.89 的唯一(因此是默认的)虚拟主机是 website1.com,所以您登陆的是 website1。

因此您应该检查您的 DNS 记录是否配置正确。

答案2

如果两台服务器的 IP 地址不同,则不应使用NameVirtualHost。该指令专门用于在同一 IP 地址上拥有多个站点。因此,请删除这两个指令。

此外,在您发布的配置中,两个网站具有相同的 DocumentRoot,这意味着它们将提供相同的内容。但也许这是您混淆的内容之一?

答案3

我觉得名称虚拟主机指令正在引入基于名称的虚拟主机,请尝试删除它们。确保您有合适的 listen 指令

Listen 80

看看文档他们还将端口放在虚拟主机定义中,因此请尝试

Listen 80
<VirtualHost 12.34.567.89:80>
    DocumentRoot  /var/www/html
    ServerName website1.com
</VirtualHost>

<VirtualHost 12.34.567.90:80>
    DocumentRoot /var/www/html
    ServerName website2.com
</VirtualHost>

答案4

apache 是否列出了所有 IP?

运行 RHEL / CentOS

netstat -ntlp |grep httpd 

或 Debian / Ubuntu

netstat -ntlp |grep apache2

相关内容