如何设置 UDP NGINX 反向代理,它是如何工作的?

Rhy*_*hys 6 networking proxy nginx

我已经阅读了有关 NGINX 的 UDP/TCP 反向代理的文档,但我有点困惑。NGINX 是否需要同时在代理服务器和代理将转发的服务器上?

我的配置将是我的 nginx udp 代理服务器,它有两个 ips (5.0.0.0, 6.0.0.0),我想将这些代理轮换到 153.0.0.0。端口将为 2555。

我对配置感到困惑。

listen 指令定义服务器侦听的 IP 地址和/或端口。

这是否意味着它也将代理的服务器的 IP (153.0.0.0) 或内部 IP?

包括 proxy_pass 指令以定义代理服务器或服务器转发流量的上游组

我不确定这意味着什么

指定 proxy_bind 指令和必要网络接口的 IP 地址:

这是内部IP,还是它也将绑定的外部IP?(5.0.0.0)

可能一个简单的配置将有助于向我解释。我找到了一些例子,但我不确定哪个是本地、外部、代理服务器,或者它代理 IP 的服务器,因此它没有帮助。

Ana*_*man 7

NGINX 是否需要同时位于代理服务器和代理将转发到的服务器上?

这通常不是必需的。

我对 [ listen指令感到困惑。]

如上所述,listen指令定义了“服务器侦听的 IP 地址和/或端口”。“侦听”是指监视传入连接。“服务器”是托管 Nginx 的计算机,因此它指的是接收代理连接(然后该计算机将传递)的计算机的 IP 和/或端口。

前任。在端口 8080 上侦听 IP 127.0.0.1

listen 127.0.0.1:8080;
Run Code Online (Sandbox Code Playgroud)

前任。侦听端口 53 (DNS) 上的所有 udp 流量

listen 53 udp;
Run Code Online (Sandbox Code Playgroud)

我不确定这意味着什么:包括 proxy_pass 指令来定义代理服务器或服务器转发流量的上游组。

所述proxy_pass指令定义了计算机(一个或多个),以其中的Nginx代理“通过”数据(服务器实际给定的请求作出响应)。这可以是 URL、IP 地址或组名。

前任。URL(代理数据传递到example.com完成请求)

proxy_pass http://example.com;
Run Code Online (Sandbox Code Playgroud)

前任。IP(代理数据传递到IP 127.0.0.1完成请求)

proxy_pass http://127.0.0.1;
Run Code Online (Sandbox Code Playgroud)

前任。组(代理数据传递给定义组的成员以完成请求)

upstream dns_servers {
    server 192.168.136.130:53;
    server 192.168.136.131:53;
}

#... 

proxy_pass dns_servers;
Run Code Online (Sandbox Code Playgroud)

请注意,上面的组可以包含 URL,例如 backend1.example.com:53;.

指定 proxy_bind 指令和必要网络接口的 IP 地址- 这是它将绑定到的内部 IP 还是外部 IP?

proxy_bind指令“使得与代理服务器传出连接从指定的起源本地IP地址与可选的端口”。因此,在大多数情况下,它将是本地的(尽管可以按照链接中的详细说明绑定到远程 IP)。此选项可能仅在您有多个网络接口或需要选择特定源 IP 地址时才真正有用,因为连接需要特定 IP 才能正常运行。

可能一个简单的配置将有助于向我解释 [事物]。

这可能适合也可能不适合您的情况,但一个非常简单的 tcp/http 示例可能如下所示:

server {

         listen 2555;
         #... 

         location /app1/ {
               proxy_bind 5.0.0.0;
               proxy_pass http://153.0.0.0:2555;
          }

          location /app2/ {
                proxy_bind 6.0.0.0;
                proxy_pass http://153.0.0.0:2555;
          }

         #... 
} 
Run Code Online (Sandbox Code Playgroud)

作为UDP 代理的一个简单示例:

stream {
    server {
        listen 2555 udp;
        proxy_pass receiving_servers;
        proxy_responses: 0;
        proxy_bind 5.0.0.0;
        #... 
    }

    upstream receiving_servers {
        server 153.0.0.0:2555;
    }

    #... 
}
Run Code Online (Sandbox Code Playgroud)

我的配置将是我的 nginx udp 代理服务器,它有两个 ips (5.0.0.0, 6.0.0.0),我想将这些代理轮换到 153.0.0.0。

如果我没记错的话,如果你想真正轮换 IP,你可能需要一个负载均衡器(可能是另一个带有 Nginx 的服务器)在你的代理前面(我不确定这是否可以完全在内部完成)。