📅  最后修改于: 2023-12-03 15:18:42.920000             🧑  作者: Mango
在使用 Nginx 反向代理时,有一种常见的问题是获取真实的客户端 IP 地址。在默认情况下,Nginx 会将经过反向代理的 HTTP 请求中的 X-Forwarded-For
头中的内容作为客户端 IP 地址。然而,该头信息是可以被伪造的,因此不是完全可靠的。为了获取更加可信的客户端 IP 地址,我们可以通过在 Nginx 配置中使用 proxy_pass
及其它相关指令来实现。
以下是一份给出了如何通过 proxy_pass
实现真实 IP 地址传递的 Nginx 配置示例:
server {
listen 80;
server_name example.com;
# 关键配置:将客户端的真实 IP 地址传递到后端服务器
proxy_set_header X-Real-IP $remote_addr;
location / {
# 后端服务器地址,这里以示例中的 127.0.0.1:8080 为例
proxy_pass http://127.0.0.1:8080;
# 后端服务器的真实 IP 地址,一般来说,需要根据实际情况进行修改
proxy_set_header Host $host;
# 传递协议头
proxy_set_header X-Forwarded-Proto $scheme;
# 传递协议版本号
proxy_set_header X-Protocol-Version HTTP/1.1;
}
}
关键的配置指令为 proxy_set_header X-Real-IP $remote_addr;
,该指令将客户端的真实 IP 地址传递给后端服务器。同时,我们也可以通过 proxy_set_header
指令设置其它头信息,如 Host
、X-Forwarded-Proto
和 X-Protocol-Version
等,以便后端服务器能够正确地识别客户端请求。
通过使用 proxy_pass
实现真实 IP 地址传递,我们可以获取更加可信的客户端 IP 地址,并在后端服务器中做进一步的处理。需要注意的是,在实际使用过程中,需要根据实际情况对 Nginx 配置作出相应的修改,以确保其能够正确地传递客户端 IP 地址及其它相关信息。