【问题标题】:Differentiate between source address of udp packets区分udp数据包的源地址
【发布时间】:2018-07-18 19:48:17
【问题描述】:

我目前有一个 nginx 实例,它在端口 8000 上侦听 udp 流量,然后将数据包发送到侦听端口 5678 的服务器。我被要求重新配置我的 nginx,以便根据谁(发件人的 IP 和端口)将数据包发送到 8000 端口,数据包将被发送到相应的服务器。例如,如果进程 1 在 localhost:1234 上并发送 udp 到端口 8000,则 nginx 会将其转发到服务器 1。如果进程 2 在 localhost:2345 上发送一个 udp 到端口 8000,nginx 会将该数据包转发到服务器 2。这可能吗?这是我的配置文件。

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}


stream {
        server {
                listen  127.0.0.1:8000 udp;
                proxy_pass      127.0.0.1:5678;
        }


}

【问题讨论】:

    标签: nginx configuration nginx-reverse-proxy


    【解决方案1】:

    设法通过使用地图来解决它。更新的配置现在是

    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    
    # Load dynamic modules. See /usr/share/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;
    
    events {
        worker_connections 1024;
    }
    
    
    stream {
            #define the various upstreams
            upstream app_1 {
                    server 127.0.0.1:5678;
            }
    
            upstream app_2 {
                    server 127.0.0.1:9000;
            }
            #map source port to upstream
            map $remote_port $backend_svr {
                    1234 "app_1";
                    1235 "app_2";
            }
            #all udp traffic received on 8000, depending on source it will be redirected
            server {
                    listen 8000 udp;
                    proxy_pass $backend_svr;
            }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 2017-05-13
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 2011-05-19
      相关资源
      最近更新 更多