学会NGINX转发,轻松掌握源IP地址获取技巧

2026-08-22 0 阅读

在Web开发中,有时我们需要获取访问者的源IP地址来进行日志记录、访问统计或者安全控制等操作。NGINX作为一个高性能的Web服务器和反向代理服务器,可以帮助我们轻松实现这一需求。本文将详细讲解如何在NGINX中配置转发规则以获取源IP地址。

NGINX的工作原理

NGINX是一个高性能的HTTP和反向代理服务器,它可以作为一个反向代理来转发请求。在转发请求的过程中,NGINX可以获取客户端的IP地址,并将其传递给后端服务器。

获取源IP地址

在NGINX中,源IP地址通常被存储在$remote_addr变量中。这个变量包含了客户端的原始IP地址。

1. 配置NGINX反向代理

首先,我们需要在NGINX配置文件中设置反向代理。以下是一个简单的配置示例:

server {
    listen       80;
    server_name  example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

在这个配置中,proxy_pass指令指定了反向代理的目标服务器。proxy_set_header指令用于添加或修改HTTP头部信息。这里,我们添加了三个头部信息:

  • X-Real-IP: 用于存储客户端的原始IP地址。
  • X-Forwarded-For: 用于存储经过的代理服务器列表。
  • Host: 用于传递原始的Host头部信息。

2. 获取源IP地址

在后端服务器上,我们可以通过访问X-Real-IPX-Forwarded-For头部信息来获取源IP地址。以下是一个简单的Python Flask示例:

from flask import request

@app.route('/')
def index():
    x_real_ip = request.headers.get('X-Real-IP')
    x_forwarded_for = request.headers.get('X-Forwarded-For')

    return f"X-Real-IP: {x_real_ip}<br>X-Forwarded-For: {x_forwarded_for}"

在这个示例中,我们通过访问X-Real-IPX-Forwarded-For头部信息来获取源IP地址。

总结

通过配置NGINX反向代理并设置适当的头部信息,我们可以轻松地获取访问者的源IP地址。这可以帮助我们在Web开发中进行各种操作,如日志记录、访问统计和安全控制等。希望本文能帮助您掌握这一技巧。

分享到: