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

Nginx配置阻止IP访问与HTTP直连443端口泄露问题问询

问题解决方案

一、阻断http://ip:443的纯HTTP请求

当客户端向443端口发送纯HTTP请求时,你当前的SSL监听server块无法处理这类请求,Nginx会默认返回错误页面。要彻底阻断,需新增一个不启用SSL的443端口默认server块,放在现有SSL server块之前:

# 拦截发往443端口的纯HTTP请求
server {
    listen 443 default_server;
    listen [::]:443 default_server;
    # 直接关闭连接,无任何响应返回
    return 444;
}

若要对这类请求也应用CDN IP限制,只需将规则引入该块:

server {
    listen 443 default_server;
    listen [::]:443 default_server;
    include nginxconfig/block/access-cdn-ip.conf;
    return 444;
}

此前CDN IP规则未生效,是因为纯HTTP请求走的是无SSL监听路径,而你的规则仅配置在SSL server块中,无法覆盖这类请求。

二、实现类似HAProxy strict-sni的SNI强制验证

HAProxy的strict-sni会在SSL握手阶段,拒绝未发送SNI或SNI无效的请求。Nginx可通过ssl_preread模块结合stream层配置实现相同效果:

  1. 确保Nginx编译时包含ngx_http_ssl_preread_module(主流发行版官方包默认自带)。
  2. 添加stream层配置,在SSL握手前校验SNI:
stream {
    # 定义允许的域名列表,匹配则标记为1,否则为0
    map $ssl_preread_server_name $allowed {
        your-domain.com 1;
        sub.your-domain.com 1;
        default 0;
    }

    server {
        listen 443 ssl reuseport;
        listen [::]:443 ssl reuseport;
        ssl_preread on;
        
        # SNI不匹配则直接关闭TCP连接
        if ($allowed = 0) {
            return 44;
        }
        
        # 将合法请求转发到本地HTTP服务(可自定义端口)
        proxy_pass 127.0.0.1:8080;
    }
}
  1. 修改HTTP层配置,监听本地端口处理转发请求:
http {
    server {
        listen 127.0.0.1:8080 ssl;
        server_name your-domain.com sub.your-domain.com;
        
        # 原有SSL配置、业务逻辑、CDN IP限制等
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_certificate /path/to/your/cert.pem;
        ssl_certificate_key /path/to/your/key.pem;
        include nginxconfig/block/access-cdn-ip.conf;
        
        # 其他业务配置...
    }

    # 兜底处理未匹配请求
    server {
        listen 127.0.0.1:8080 default_server;
        return 444;
    }
}

此配置会在SSL握手前就阻断无效SNI请求,不会返回任何Nginx相关标识,完全复刻HAProxy strict-sni的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:32:15