You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache配置:HTTPS访问IP时返回403禁止页面的最佳实践

解决HTTPS访问服务器IP返回网站内容的最佳实践

方法1:配置优先级最高的默认SSL虚拟主机

Apache处理无匹配域名的HTTPS请求时,会加载第一个被读取的SSL虚拟主机作为默认项。你可以创建一个优先级最高的默认配置,专门拦截这类请求:

  1. 创建配置文件(命名为000-default-ssl.conf,数字前缀确保优先加载),内容如下:
<VirtualHost *:443>
    ServerName _default_
    SSLEngine on
    # 可复用现有证书或使用自签名证书(IP访问必然触发SSL警告,不影响拦截逻辑)
    SSLCertificateFile /path/to/your/cert.pem
    SSLCertificateKeyFile /path/to/your/key.pem

    # 直接返回403禁止访问
    <Location />
        Require all denied
    </Location>
</VirtualHost>
  1. 启用配置:a2ensite 000-default-ssl.conf
  2. 重启Apache:systemctl restart apache2

这个方案无需额外设置“任意域名”,用_default_明确标记为默认SSL虚拟主机,所有匹配不到业务域名的HTTPS请求(包括IP访问)都会被拦截并返回403。

方法2:在业务SSL虚拟主机中添加IP拦截规则

如果不想新增配置文件,可直接在现有业务域名的SSL虚拟主机里添加针对IP访问的拒绝逻辑:

<VirtualHost *:443>
    ServerName your-domain.com
    # 保留原有业务配置...

    # 拦截指定IP的访问请求
    <If "%{HTTP_HOST} == '1.2.3.4'">  # 替换为你的服务器IP
        Require all denied
    </If>
</VirtualHost>

若服务器有多个IP,需逐个添加判断条件,通用性不如方法1。

方法3:用mod_rewrite动态拦截所有IP格式请求

通过重写规则匹配所有IP格式的主机头,直接返回403:
在业务SSL虚拟主机配置或站点根目录的.htaccess中添加:

RewriteEngine On
# 匹配任意IP格式的HTTP_HOST
RewriteCond %{HTTP_HOST} ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$
RewriteRule ^(.*)$ - [R=403,L]

该方案适合服务器IP不固定或有多个IP的场景,无需手动指定具体IP。


注意事项

  • HTTPS访问IP时的SSL警告无法消除,因为证书绑定的是域名,与IP必然不匹配,属于正常现象。
  • 使用方法1时,务必保证默认SSL虚拟主机的加载优先级最高,否则Apache仍会匹配到业务虚拟主机。

内容的提问来源于stack exchange,提问作者Flo Espen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:16:27