基于名称的 Apache 设置

基于名称的 Apache 设置

我想要做的是在访问域名时显示一个页面,但如果有人尝试直接通过 IP 访问(而不使用域名),我想向他显示另一个页面。

基于经典名称的 Apache 托管对吗?

好吧,我唯一的问题是我应该在 ServerName 和/或 ServerAlias 中输入什么?

到目前为止我所做的就是取消注释此行:

NameVirtualHost *:80

我已经设置了 2 个虚拟主机,如下所示(具体信息隐藏):

<VirtualHost *:80>
        ServerAdmin [email protected]
        DocumentRoot /var/www/vhosts/default/
        ServerName {my-dedicated-ip}
        ErrorLog /var/www/vhosts/default/error.log
        CustomLog /var/www/vhosts/default/custom.log gk
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/vhosts/something/httpdocs/
    ServerName valid-domain.com
    ServerAlias *.valid-domain.com
    ErrorLog "| /usr/sbin/rotatelogs -l /var/www/vhosts/something/logs/error.log.%Y.%m.%d 86400"
    CustomLog "| /usr/sbin/rotatelogs -l /var/www/vhosts/somthing/logs/custom.log.%Y.%m.%d 86400" gk
</VirtualHost>

但不幸的是,它不起作用。

提前致谢。

编辑:哦,我有一个专用IP。

我也刚刚发现了这个:如何让 Apache 不响应仅 IP 请求?根据此,我的设置应该可以工作。它应该访问它找到的第一个虚拟主机。但是它没有。它转到了第二个。

编辑:apachectl -S 输出:

[root@me conf.d]# apachectl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server domain.com (/etc/httpd/conf/httpd.conf:1015)
         port 80 namevhost {my-dedicated-ip} (/etc/httpd/conf/httpd.conf:1015)
         port 80 namevhost valid-domain.com (/etc/httpd/conf/httpd.conf:1023)
                 wild alias *.vaild-domain.com
Syntax OK

是的,这两个虚拟主机位于同一个文件中。

答案1

在 Apache 2.2 中,您可以指定默认虚拟主机_default_指令应与 IP 地址以及后续 VirtualHost 条目中未明确定义为 ServerName 或 ServerAlias 的所有域名匹配。

例如:

<VirtualHost _default_:80>
        DocumentRoot /var/www/vhosts/default/
        ServerName default
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/vhosts/something/httpdocs/
    ServerName valid-domain.com
</VirtualHost>

相关内容