我使用 nginx 作为 tcp 反向代理。客户端只在后端显示代理 IP。但我需要真实的用户 IP。我尝试包含 proxy_params,但它不起作用。
nginx 配置:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 1024;
use epoll;
multi_accept on;
}
stream{
include /etc/nginx/tcp-proxies/*.proxy;
}
xxx.代理:
server{
listen 11111;
proxy_pass xxx.xxx.xxx.xxx:33333;
}
我该怎么做才能包含 proxy_params 来在后端显示真实的客户端 IP?
答案1
您需要传递真实 IP,如下所示:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
但是你还需要说你的后端来检索它
例如如果您使用 nginx 作为后端,则需要在后端配置中指定以下内容:
set_real_ip_from x.x.x.x/x;
答案2
我的后端不使用 nginx 或 apache。
当我在 nginx.conf 中设置
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
我收到此错误:
2018/12/09 15:46:54 [emerg] 12162#12162: /etc/nginx/nginx.conf:14 中不允许使用“proxy_set_header”指令