Nginx负载平衡器未传递原始IP地址

Nginx负载平衡器未传递原始IP地址,nginx,load-balancing,syslog,Nginx,Load Balancing,Syslog,我们正在使用nginx对syslog流量进行负载平衡,但现在syslog服务器看到所有事件都来自nginx负载平衡器的IP地址。如何让nginx“proxy\u pass”方法保持源IP的完整性 nginx.conf(源IP最终成为nginx的) 在另一个回答中,我发现有人使用了“proxy\u bind$remote\u addr transparent”;但是当我尝试我的syslog服务器没有收到任何东西时——取消注释这行就恢复正常(源IP仍然错误) nginx.conf(不向上游服务器传递

我们正在使用nginx对syslog流量进行负载平衡,但现在syslog服务器看到所有事件都来自nginx负载平衡器的IP地址。如何让nginx“proxy\u pass”方法保持源IP的完整性

nginx.conf(源IP最终成为nginx的)

在另一个回答中,我发现有人使用了“proxy\u bind$remote\u addr transparent”;但是当我尝试我的syslog服务器没有收到任何东西时——取消注释这行就恢复正常(源IP仍然错误)

nginx.conf(不向上游服务器传递任何内容):

events {
   worker_connections 1024;
}
stream {
   upstream logstash_servers {
      server logstash-collector-01:514 max_fails=2 fail_timeout=5s;
      server logstash-collector-02:514 max_fails=2 fail_timeout=5s;
   }
   server {
      listen 514;
      proxy_pass logstash_servers;
      proxy_bind $remote_addr transparent;
   }
}

要使ip透明性发挥作用,您必须使NGINX成为上游服务器上的默认网关。最好在X-Forwarded-For报头中传递原始客户机ip,并将其记录下来

要使ip透明性发挥作用,您必须使NGINX成为上游服务器上的默认网关。最好在X-Forwarded-For报头中传递原始客户机ip,并将其记录下来

这里最好的答案是使用
proxy\u bind$remote\u addr transparent在proxy_pass行之后,使nginx成为透明的代理并传递原始IP地址。为了使其工作,您必须指定
user root在“main”上下文中(即nginx.conf的顶部,在任何事件{}、流{}等之外)。

这里最好的答案是使用
代理绑定$remote\u addr transparent在proxy_pass行之后,使nginx成为透明的代理并传递原始IP地址。为了使其工作,您必须指定
user root
在“main”上下文中(即nginx.conf的顶部,在任何事件{}、流{}等之外)。

但是我不能使用X-Forwarded-For,除非在
http
模块内部。在上面的我的配置中,当使用
proxy\u set\u header X-Forwarded-For$proxy\u add\u X\u Forwarded\u For
在我的另一个
proxy_pass
行之后,我得到了错误:
2017/02/02 03:46:37[emerg]1#1:/etc/nginx/nginx.conf:21 nginx:[emerg]“proxy_set_header”中不允许使用proxy_set_header指令在/etc/nginx/nginx.conf:21中不允许使用指令,但我不能使用X-Forwarded-For,除非在
http
模块中。在上面的我的配置中,当使用
proxy\u set\u header X-Forwarded-For$proxy\u add\u X\u Forwarded\u For
在我的另一个
proxy_pass
行之后,我得到了错误:
2017/02/02 03:46:37[emerg]1#1:“proxy_set_header”指令在/etc/nginx/nginx.conf:21 nginx:[emerg]“proxy_set_header”指令在/etc/nginx/nginx.conf:21中不被允许作为参考,这个nginx文档页面帮助:作为参考,这个nginx文档页面帮助:遵循本文步骤:1。更改Nginx配置(以Root用户身份运行并添加IP透明标头。2.更改Nginx服务器上的IPTables规则。3.在上游服务器上添加路由。按照本文的步骤操作:1.更改Nginx配置(以Root用户身份运行并添加IP透明标头。2.更改Nginx服务器上的IPTables规则。3.在上游服务器上添加路由。
events {
   worker_connections 1024;
}
stream {
   upstream logstash_servers {
      server logstash-collector-01:514 max_fails=2 fail_timeout=5s;
      server logstash-collector-02:514 max_fails=2 fail_timeout=5s;
   }
   server {
      listen 514;
      proxy_pass logstash_servers;
      proxy_bind $remote_addr transparent;
   }
}