为了实现只允许通过域名 www.cdjhk.cn:9099 访问,禁止直接通过 IP 125.70.2.23:9099

helei 2025-3-7 108 3/7

为了实现只允许通过域名 www.cdjhk.cn:9099 访问,禁止直接通过 IP 125.70.2.23:9099 访问的需求,请按照以下步骤操作:


解决方案

适用场景

  • 服务类型为 HTTP/HTTPS,可通过反向代理(如 Nginx)基于 Host 头过滤请求。
  • 若服务非 HTTP(如 TCP 自定义协议),需结合其他方法(如 SNI 过滤或应用层校验)。

步骤 1:在内网服务器上配置反向代理(以 Nginx 为例)

  1. 安装 Nginx
    如果尚未安装,使用包管理器安装 Nginx:

    # Ubuntu/Debian
    sudo apt update && sudo apt install nginx
    
    # CentOS/RHEL
    sudo yum install epel-release && sudo yum install nginx
  2. 配置反向代理规则
    编辑 Nginx 配置文件(如 /etc/nginx/conf.d/cdjhk.conf),添加以下内容:

    # 处理域名请求
    server {
       listen 9099;
       server_name www.cdjhk.cn;
    
       location / {
           proxy_pass http://192.168.1.250:9099;  # 指向实际服务的内网地址和端口
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
       }
    }
    
    # 拒绝直接通过 IP 的访问
    server {
       listen 9099 default_server;
       server_name _;
       return 403;  # 返回 403 禁止访问
    }
  3. 重启 Nginx

    sudo systemctl restart nginx

步骤 2:调整路由器的 NAT 转发规则

将外网 125.70.2.23:9099 的流量转发到内网服务器的 Nginx 监听端口(9099),而非直接转发到实际服务端口:

  1. 登录路由器管理界面。
  2. 修改端口转发规则:
    • 外部端口: 9099
    • 内部 IP: 192.168.1.250(内网服务器)
    • 内部端口: 9099(Nginx 监听的端口)

步骤 3:验证配置

  1. 通过域名访问
    浏览器访问 http://www.cdjhk.cn:9099,应正常显示服务内容。

  2. 通过 IP 直接访问
    浏览器访问 http://125.70.2.23:9099,应返回 403 Forbidden 错误。


其他场景补充

1. 若服务为 HTTPS

启用 SNI 过滤,Nginx 配置示例:

server {
    listen 9099 ssl;
    server_name www.cdjhk.cn;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/privkey.pem;

    # 其他 SSL 配置...

    location / {
        proxy_pass http://192.168.1.250:9099;
    }
}

server {
    listen 9099 ssl default_server;
    server_name _;
    ssl_reject_handshake on;  # 拒绝非匹配域名的 SSL 握手
}

2. 若服务非 HTTP(如 TCP 协议)

  • 方案一:应用层校验
    在服务代码中检查请求是否包含域名标识(需协议支持)。

  • 方案二:IP 黑名单(不推荐)
    通过防火墙临时屏蔽 IP 访问,但无法区分域名和 IP 请求:

    # 使用 iptables 拒绝所有直接访问 9099 端口的请求(慎用!可能误杀合法流量)
    iptables -A INPUT -p tcp --dport 9099 -j DROP

注意事项

  • 服务端口冲突:确保 Nginx 独占 9099 端口,若原服务已占用此端口,需先停止原服务或更改其监听端口。
  • 协议兼容性:非 HTTP 服务需根据协议特性调整方案。
  • 防火墙设置:确保服务器防火墙允许 9099 端口的入站流量。

通过以上配置,即可实现仅允许域名访问、禁止直接 IP 访问的需求。

- THE END -

helei

3月07日10:57

最后修改:2025年3月7日
0