Nginx TCP PROXY 转发客户端 IP

Nginx TCP PROXY 转发客户端 IP

我使用 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”指令

相关内容