在同一系统上使用 2 个 IP 托管 Nginx 和 Apache

在同一系统上使用 2 个 IP 托管 Nginx 和 Apache

我的服务器有两个 IP 192.168.1.90 和 192.168.1.99 我希望 nginx 在 192.168.1.99 上监听,Apache 在 192.168.1.90 上监听,我还需要在 apache 上托管多个虚拟主机。

尝试修改 apache 的 ports.conf 为

NameVirtualHost 192.168.1.90:80
Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

然后我在 apache 中托管了一个虚拟主机

<VirtualHost 192.168.1.90:80>
DocumentRoot /home/webmaster/www/thefactor/
ServerName www.XYZ.com
ServerAlias XYZ.cu.com

# Other directives here

</VirtualHost>

问题是所有流量,所有到达 192.168.1.90 的请求,无论域名如何,都会加载 XYZ.com。即:如果我将 ABC.com 指向 192.168.1.90,那么当我浏览它时,它会加载 XYZ.com 页面,但地址栏中的地址仍为 ABC.com,所以它不是重定向。

知道为什么会发生这种情况吗

答案1

您定义的第一个虚拟主机将是“默认”主机。因此,所有未在其他地方配置的域的请求都将转到此第一个主机。

如果您希望忽略未在服务器上配置但指向该服务器的域的请求,则需要创建一个单独的“捕获所有”虚拟主机,该虚拟主机会拒绝所有请求,并在 othhosts 之前列出。

<VirtualHost 192.168.1.90:80>
    #Dummy Host denies all accesses.
    Order Allow, Deny
    Deny from all
</VirtualHost>

<VirtualHost 192.168.1.90:80>
    DocumentRoot /home/webmaster/www/thefactor/
    ServerName www.XYZ.com
    ServerAlias XYZ.cu.com

    # Other directives here
</VirtualHost>

答案2

您需要将 Listen 指令缩小到 192.168.1.90,否则 Apache 将监听所有 IP(并且传入的请求将命中默认虚拟主机)。
Listen 192.168.1.90:80
Listen 192.168.1.90:443

相关内容