apache2 - apache2 忽略默认主机并始终重定向到域,即使使用 IP
问题描述
当用户通过 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
.
解决方案
您应该避免<virtualhost *>
哪些金额<virtualhost *:*>
确实非常不寻常。从任何虚拟主机中省略 ServerName 也是一个坏主意,因为它将从系统主机名中提取并导致混乱。
Apache 首先选择最匹配的 IP:PORT 组合,然后从最匹配的虚拟主机集中查看 ServerName/ServerAlias。
这就是*:80
选择您的虚拟主机的原因——这是一个更具体的匹配。
推荐阅读
- javascript - 将网格中的选定数据插入 SQL Server 数据库
- wifi - 我可以仅使用 PMK 对已知 WiFi 进行身份验证吗?
- c++ - 为什么 gmp 在此处重新分配时会因“无效的下一个大小”而崩溃?
- c# - 管理直线频道 Web 小部件的会话
- python - Python Tkinter 滑块自定义
- php - 在类中使用 PDO - 在 null 上调用成员函数 prepare()
- python - 使用已使用 numpy save 保存的 numpy fromfile 恢复二进制数据
- sed - 如何使用 sed 将文件中某些行的间距加倍
- amazon-web-services - 如何找到只有 id 的 Amazon EC2 AMI?
- python - 用 Pandas 中行前后值的平均值替换给定列的异常值