如何在 VPS 上配置 Nginx 反向代理隐藏真实 IP?

文章导读
在 VPS 上配置 Nginx 反向代理隐藏真实 IP,核心是将后端服务绑定至内网地址(如 127.0.0.1),仅开放 Nginx 的 80/443 端口,并通过防火墙禁止外部直接访问后端端口。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

在 VPS 上配置 Nginx 反向代理隐藏真实 IP,核心是将后端服务绑定至内网地址(如 127.0.0.1),仅开放 Nginx 的 80/443 端口,并通过防火墙禁止外部直接访问后端端口。

先说结论:Nginx 反向代理能有效隔离客户端与后端服务,但需配合防火墙策略和响应头清理才能防止 IP 泄露。

  • 适合:VPS 托管 Web 服务、微服务网关、需要隔离后端拓扑的场景
  • 先准备:安装 Nginx、确认后端服务监听地址、配置云安全组或 iptables
  • 验收:curl 检查响应头无后端信息、直接访问后端端口被拒绝、日志记录真实客户端 IP

命令速用版

以下是基于 Linux VPS 的最小化配置片段,可直接嵌入 Nginx 配置文件:

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_hide_header X-Powered-By;
        proxy_hide_header Server;
    }
}

在全局 http 块中添加 server_tokens off; 以关闭 Nginx 版本号暴露。

为什么会这样

Nginx 反向代理通过作为中间层接收请求并转发,使客户端仅与 Nginx 交互。

默认情况下,后端服务若监听公网 IP 或未清理响应头,仍可能泄露真实地址或技术栈。隐藏 IP 的本质是网络层隔离(防火墙)与应用层伪装(Header 清理)的结合,确保外部无法直连后端且无法通过响应信息推断源站。

分步处理

1. 绑定后端服务至内网

检查后端应用(如 Tomcat、Node.js)配置,确保监听地址为 127.0.0.1 或内网 IP,禁止监听 0.0.0.0。

2. 配置防火墙策略

使用 ufw 或 iptables 禁止外部访问后端端口。例如运行 ufw deny 8080 或在云安全组中仅放行 80/443 端口。

3. 配置 Nginx 反向代理

在 location 块中设置 proxy_pass 指向内网地址,避免使用公网域名或 IP。添加 proxy_set_header 透传客户端真实 IP 信息。

如何在 VPS 上配置 Nginx 反向代理隐藏真实 IP?

4. 清理敏感响应头

添加 proxy_hide_header Server; 和 proxy_hide_header X-Powered-By; 防止泄露后端技术栈。全局关闭 server_tokens。

5. 拦截非法 HTTPS 直连

针对 Nginx ≥1.19.4 版本,在默认 HTTPS server 块中加 ssl_reject_handshake on; 老版本可新增 server_name _; 的 server 块监听 443 并返回 444,防止通过 IP 直接访问 HTTPS 暴露证书域名。

怎么验证是否生效

1. 检查响应头

使用 curl -I http://your-domain.com 查看响应头,确认无后端 Server 信息,且 X-Forwarded-For 相关头存在。

2. 测试直连后端

尝试直接访问 http://your-domain.com:8080,应返回连接拒绝或 403/404,证明防火墙生效。

3. 核对日志

检查 Nginx 访问日志,remote_addr 应为用户真实 IP;后端日志中来源应为 127.0.0.1,但应用层读取的 X-Real-IP 字段正确。

如何在 VPS 上配置 Nginx 反向代理隐藏真实 IP?

常见坑

1. 后端监听公网

若后端服务监听 0.0.0.0 且防火墙未拦截,攻击者仍可扫描端口直连源站。

2. 响应头泄露

未配置 proxy_hide_header 可能导致后端框架版本暴露,增加被针对性攻击风险。

3. 客户端 IP 失真

未透传 X-Real-IP 会导致后端日志记录的是 Nginx 本机 IP,影响风控和统计。

4. 证书域名暴露

若未配置兜底 server 块拦截 IP 直连 HTTPS,扫描器可通过 IP 访问获取证书中的域名信息。

常见问题

配置反向代理后后端日志 IP 全是 127.0.0.1 怎么办?

需在 Nginx 配置中显式透传 X-Real-IP 和 X-Forwarded-For 头,并在后端应用中读取这些字段获取真实 IP。

使用 CDN 后还需要配置 Nginx 隐藏 IP 吗?

需要,CDN 回源仍会访问源站 IP,若源站未限制仅允许 CDN 节点访问,真实 IP 仍可能暴露。

如何防止用户通过 IP 直接访问网站?

在 Nginx 中配置默认 server 块,对非预期域名的请求返回 444 或 403,仅允许绑定域名的请求通过。

参考来源

  • 如何通过 Nginx 反向代理防止后端真实 IP 暴露
  • Nginx 利用代理模块隐藏真实服务器 IP 地址
  • Nginx 反向代理隐藏 Web 真实 IP 的完整配置指南
  • Nginx 实战教程:怎么利用反向代理隐藏内部微服务真实端口与拓扑
  • 使用宝塔的反向代理功能隐藏服务器真实 ip 教程