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