![如何设置 UDP NGINX 反向代理,以及它如何工作?](https://linux22.com/image/1547655/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20UDP%20NGINX%20%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%EF%BC%8C%E4%BB%A5%E5%8F%8A%E5%AE%83%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我已阅读有关 NGINX 的 UDP/TCP 反向代理的文档,但我有点困惑。NGINX 是否需要同时位于代理服务器和代理将转发到的服务器上?
我的配置是 nginx udp 代理服务器,有两个 ip(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 的服务器,因此它没有帮助。
答案1
NGINX 是否需要同时位于代理服务器和代理将转发到的服务器上?
这通常没有必要。
我对[感到困惑听指示。]
这听指令定义“服务器监听的 IP 地址和/或端口”,如所述。“监听”是指监控传入连接。“服务器”是托管 Nginx 的计算机,因此它指的是接收代理连接的计算机的 IP 和/或端口(该计算机随后将传递该连接)。
例如,监听 IP 127.0.0.1 的 8080 端口
listen 127.0.0.1:8080;
例如,监听端口 53 上的所有 UDP 流量 (DNS)
listen 53 udp;
我不确定这是什么意思:包括 proxy_pass 指令来定义代理服务器或服务器转发流量的上游组。
这代理密码指令定义 Nginx 代理将数据“传递”到的计算机(实际响应给定请求的服务器)。这可以是 URL、IP 地址或组名。
例如 URL(代理数据传递到 example.com 以完成请求)
proxy_pass http://example.com;
例如 IP(代理数据传递到 IP 127.0.0.1 以完成请求)
proxy_pass http://127.0.0.1;
例如组(代理数据传递给定义组的成员以完成请求)
upstream dns_servers {
server 192.168.136.130:53;
server 192.168.136.131:53;
}
#...
proxy_pass dns_servers;
请注意,上面的组可以包含 URL,例如 backend1.example.com:53;
。
指定 proxy_bind 指令和必要网络接口的 IP 地址- 这是它将绑定到的内部 IP 还是外部 IP?
这代理绑定指令“使到代理服务器的传出连接源自指定的本地 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;
}
#...
}
举一个简单的例子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;
}
#...
}
我的配置将是我的 nginx udp 代理服务器,它有两个 ip(5.0.0.0、6.0.0.0),我想将其代理轮换到 153.0.0.0。
如果我没记错的话,如果您想要真正轮换 IP,您可能需要在代理前面有一个负载均衡器(也许是另一台带有 Nginx 的服务器)(我不确定这是否可以纯粹在内部完成)。