当从Firefox浏览器请求时,Turn服务器不会在NGINX之后给予任何ICE候选

xuo3flqw  于 2023-05-22  发布在  Nginx
关注(0)|答案(1)|浏览(206)

我正在尝试在我的TURN服务器前面添加NGINX,我正在使用coturn包。
我的NGINX conf看起来像这样。

stream {
     upstream turn
        {
                server 127.0.0.1:5349;
        }
     server {
                listen 443 udp;

                resolver 1.1.1.1;
                proxy_connect_timeout 5s;
                proxy_timeout 15s;
                proxy_protocol on;

                proxy_pass turn;
                ssl_preread on;
     }
}

这适用于Chrome浏览器。我得到srflx和中继候选人。
但在Firefox上,这些候选人都没有。
即使在chrome上,我在有和没有NGINX的情况下得到的候选人也有轻微的差异,这可能是原因。
没有NGINX:

candidate:3646143538 1 udp 1677729535 <my_ip> 59271 typ srflx raddr 0.0.0.0 rport 0 generation 0 ufrag xmIu network-cost 999

candidate:1499094430 1 udp 33562623 <public_ip_of_my_turn> 63683 typ relay raddr <my_ip> rport 59271 generation 0 ufrag xmIu network-cost 999

关于NGINX:

candidate:4227863252 1 udp 1677729535 127.0.0.1 54974 typ srflx raddr 0.0.0.0 rport 0 generation 0 ufrag 0nJM network-cost 999

candidate:601945334 1 udp 33562623 <public_ip_of_my_turn> 60590 typ relay raddr 127.0.0.1 rport 54974 generation 0 ufrag 0nJM network-cost 999

正如我们所看到的,我得到了raddr作为localhost。将客户端IP正确地传递到后端可以解决这个问题。
即使在共转日志中:没有NGINX:remote <my_ip>:59271
NGINX:remote 127.0.0.1:54974
已尝试代理$remote_addr变量。因为在访问日志中,我得到了正确的IP(我的IP)。

xzlaal3s

xzlaal3s1#

你正在使用nginx作为一个通用的TCP代理。在此配置中,nginx从客户端接收外部连接,并与TURN服务器建立(localhost)TCP连接。这种配置不允许为目的地保留用户的IP地址。
您需要使用某种IP保留方法,例如使用PROXY协议(需要目标软件的支持,我怀疑coturn是否支持它)或TPROXY配置。

相关问题