apache2 忽略默认主机并始终重定向到域,即使使用 IP
Posted
技术标签:
【中文标题】apache2 忽略默认主机并始终重定向到域,即使使用 IP【英文标题】:apache2 ignoring the default host and always redirecting to domain, even when using the IP 【发布时间】:2021-08-06 00:23:02 【问题描述】:当用户通过 IP 地址访问我的服务器时,我试图让 apache2 使用默认站点,而不是输入站点的域,只是为了告诉用户他不能直接访问该 ip。
发生的情况是它不断重定向到域的站点,覆盖浏览器中的 IP 地址,而不是显示默认站点。
请注意,域的站点被重定向到 https,这是预期的。 默认站点根本不使用ssl,最好不要使用ssl。
我的站点配置如下(没有日志记录、错误文档或 ssl 路径指令): 000-default.conf
<VirtualHost *>
DocumentRoot /var/www/html
</VirtualHost>
example.com.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /home/example.com/www
Redirect permanent / https://example.com
</VirtualHost>
example.com-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /home/example.com/www
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
所有这些站点都已启用,并且 apache2 已重新启动。
> $ sudo apache2ctl -S
VirtualHost configuration:
*:* 1.2.3.4 (/etc/apache2/sites-enabled/000-default.conf:1)
*:443 example.com (/etc/apache2/sites-enabled/example.com-ssl.conf:2)
*:80 example.com (/etc/apache2/sites-enabled/example.com.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
http://example.com
和 https://example.com
的行为符合预期。
http://1.2.3.4:80/
意外重定向到 https://example.com
。
【问题讨论】:
【参考方案1】:你应该避免<virtualhost *>
等于<virtualhost *:*>
这真的很不寻常。从任何虚拟主机中省略 ServerName 也是一个坏主意,因为它将从系统主机名中提取并导致混淆。
Apache 首先选择最匹配的 IP:PORT 组合,然后从最匹配的虚拟主机集中查看 ServerName/ServerAlias。
这就是选择您的*:80
虚拟主机的原因——这是一个更具体的匹配。
【讨论】:
谢谢,这似乎是原因。我见过无数使用<virtualhost *>
设置默认值的例子。以上是关于apache2 忽略默认主机并始终重定向到域,即使使用 IP的主要内容,如果未能解决你的问题,请参考以下文章