nginx udp代理传递ip

nginx udp代理传递ip,nginx,proxy,udp,syslog,Nginx,Proxy,Udp,Syslog,寻找关于NGINX的一些指导,并将源IP地址传递给后端服务器。到目前为止,我已经找到了如何对http/s请求执行此操作的配置,但没有找到对非http/s端口进行TCP/UDP负载平衡的配置 我有一个UDP代理设置并使用NGINX,但我的应用程序(syslog服务器)中的源IP显示为NGINX的源IP,而不是向其传递syslog消息的设备 下面是我的配置-到目前为止,我空手而来,讲述如何从原始服务器传递源IP stream { server { listen 514

寻找关于NGINX的一些指导,并将源IP地址传递给后端服务器。到目前为止,我已经找到了如何对http/s请求执行此操作的配置,但没有找到对非http/s端口进行TCP/UDP负载平衡的配置

我有一个UDP代理设置并使用NGINX,但我的应用程序(syslog服务器)中的源IP显示为NGINX的源IP,而不是向其传递syslog消息的设备

下面是我的配置-到目前为止,我空手而来,讲述如何从原始服务器传递源IP

    stream {
    server {
        listen 514 udp;
        proxy_pass syslog_standard;
    }

    upstream syslog_standard {
        server syslog1.ars.com:10514 max_fails=1 fail_timeout=10s;
        server syslog2.ars.com:10514 max_fails=1 fail_timeout=10s;
    }
}

任何意见都将不胜感激

非常感谢上面的Alexey。深夜,我把这个设置/文档传了一遍

非常简单的修复方法是在
服务器
块中添加以下内容


代理绑定$remote\u addr透明

对于希望完成此任务的任何其他人--附加的是我的模板配置,我用于在不修改源信息的情况下将其用于负载平衡系统日志

重要的是: 1.如果使用透明,请确保以root身份运行,或者相应地修改selinux策略。 2.此配置用于在多个子网上允许多个侦听接口。如果只使用单个界面,请删除第二节
服务器

干杯

user root;
worker_processes 8;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
  worker_connections 1024;
}

stream {
log_format    basic    '$time_iso8601 $remote_addr '
                       '$protocol $status $bytes_sent $bytes_received '
                       '$session_time $upstream_addr '
                       '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';

# Enable access_log statements for debugging

access_log /var/log/nginx/stream.log basic;

upstream syslog_servers {
    least_conn;
    server 1.2.3.4:10514;
    server 1.2.3.5:10514;
    server 1.2.3.6:10514;
}

server {
    listen 10.11.12.13:514;
    listen 10.11.12.13:514 udp;

    proxy_responses 0;
    proxy_pass syslog_servers;
    proxy_buffer_size 4096k;
    proxy_bind $remote_addr transparent;

    # access_log /var/log/nginx/stream.log basic;
}
server {
    listen 11.12.13.14:514;
    listen 11.12.13.14:514 udp;

    proxy_responses 0;
    proxy_pass syslog_servers;
    proxy_buffer_size 4096k;
    proxy_bind $remote_addr transparent;

    # access_log /var/log/nginx/stream.log basic;
}

非常感谢,深夜和完全超越了设置。对于那些感兴趣的人来说,它只是
proxy\u bind$remote\u addr透明