必须用VirtualHost拦截IP访问:在虚拟主机配置文件顶部定义ServerName为服务器真实IP的拒绝型虚拟主机(Require all denied),再紧随其后配置真实域名的允许型虚拟主机,两者均监听相同端口,且需启用Include、禁用NameVirtualHost。

核心思路是让 Apache 把所有未匹配域名的请求(比如直接输 http://192.168.1.100)交给一个“拒绝型虚拟主机”处理,而不是落到你的真实站点配置里。
必须用 VirtualHost 拦截默认请求
Apache 的路由规则是:当请求头中的 Host 字段(如 Host: 192.168.1.100)没有被任何 ServerName 精确匹配时,它会交给配置文件中第一个定义的 <VirtualHost>。所以不能靠删掉默认配置或改权限来解决,必须主动定义一个“兜底拒绝”的虚拟主机。
- 这个拒绝型虚拟主机必须放在
httpd-vhosts.conf(或你实际使用的虚拟主机配置文件)的最顶部 -
ServerName必须写你服务器对外的真实 IP 地址(例如203.0.113.5),不能写_、localhost或留空 -
DocumentRoot可指向一个空目录(如/var/www/denied),里面无需文件 - 在对应
<Directory>块中写Require all denied
再配真实域名的允许型虚拟主机
紧接在拒绝型虚拟主机之后,写你真正的站点配置:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 监听同样端口(如
*:80或*:443) -
ServerName写你的正式域名(如www.example.com),确保和系统/etc/hosts或 DNS 解析一致 -
ServerAlias可加 www 版本或其他别名 -
DocumentRoot指向真实网站路径 - 对应
<Directory>中写Require all granted
HTTPS 环境也要同步处理
如果用了 SSL,*:443 的逻辑完全一样:
- 在
*:443配置块顶部加一个拒绝型虚拟主机 -
ServerName同样写你的 IP 地址 - 必须启用
SSLEngine on,并正确配置SSLCertificateFile和SSLCertificateKeyFile - 内部仍用
Require all denied
关键检查点
改完配置后务必验证:
- 确认
httpd.conf中已启用Include conf/extra/httpd-vhosts.conf(或你实际的包含路径) - 删除或注释掉所有
NameVirtualHost指令(Apache 2.4+ 不需要) - 重启 Apache:
sudo systemctl restart apache2(Debian/Ubuntu)或sudo systemctl restart httpd(RHEL/CentOS) - 测试:
curl -I http://你的IP应返回403 Forbidden;curl -I http://你的域名应返回200 OK

















