当前位置:首页 > 编程笔记 > 正文
已解决

Nginx用做sip代理

来自网友在路上 149849提问 提问时间:2023-11-11 17:36:02阅读次数: 49

最佳答案 问答题库498位专家为你答疑解惑

https://www.jianshu.com/p/14d134cbf8d3?tdsourcetag=s_pcqq_aiomsg

看了这篇文章的方案一,我专门试了试,记录如下:

测试环境为:

fs1(5080) --- nginx --- fs2(5060)

局域网同一个网段,fs1把呼叫送到nginx的5060,后者代理到fs2的5060

第一步,fs1和fs2默认配置,sip call flow如下:

fs1       nginx        fs2

    invite--->

                  invite--->            

                 <---200

<---200

ack------------------->

坏了,ack直接发到fs2,没有经过nginx(没有rr头, ct指向fs2)

第二步,调整fs1和fs2的配置,ext-sip-ip都指向nginx,localnet.auto deny所有

再测试,现在ack可以经过nginx,bye也正常

第三步,继续调整fs1和fs2配置,ext-rtp-ip都指向nginx,让rtp通过nginx转发,最后的结果是:

fs1                        nginx                       fs2

              sip5080<----

                                 --->sip 5060

         rtp(2000-2099) <---

                                 --->rtp(30000-30099)

结论到底如何,看官来总结吧

最后附上nginx配置文件:

#fs1:
#192.168.1.126
#sip:5080
#rtp:2000-2099#nginx
#192.168.100.75#fs2:
#192.168.1.12
#sip:5060
#rtp:30000-30099user  root;
worker_processes  auto;error_log  /var/log/nginx/error.log debug;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;keepalive_timeout  65;include /etc/nginx/conf.d/*.conf;
}stream {log_format proxy '$proxy_protocol_addr $remote_addr [$time_local] ''$protocol $status $bytes_sent $bytes_received ''$session_time "$upstream_addr" ''"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';server {listen 5060;access_log /var/log/nginx/tcp/5060_access.log proxy;error_log  /var/log/nginx/tcp/5060_error.log debug;proxy_timeout 5s;proxy_pass 192.168.1.12:5060;}server {listen 5060 udp reuseport;access_log /var/log/nginx/udp/5060_access.log proxy;error_log  /var/log/nginx/udp/5060_error.log debug;proxy_timeout 5s;proxy_pass 192.168.1.12:5060;}# rtp to 192.168.1.12:30000-30099/udpserver {listen 30000-30099 udp reuseport;access_log /var/log/nginx/udp/30000-30099_access.log proxy;error_log  /var/log/nginx/udp/30000-30099_error.log debug;proxy_timeout 5s;proxy_responses 1;proxy_pass 192.168.1.12:$server_port;}# sip to 192.168.1.126:5080/tcpserver {listen 5080;access_log /var/log/nginx/tcp/5080_access.log proxy;error_log  /var/log/nginx/tcp/5080_error.log debug;proxy_timeout 5s;proxy_pass 192.168.1.126:5080;}# sip to 192.168.1.126:5080/udpserver {listen 5080 udp reuseport;access_log /var/log/nginx/udp/5080_access.log proxy;error_log  /var/log/nginx/udp/5080_error.log debug;proxy_timeout 5s;proxy_pass 192.168.1.126:5080;}# rtp to 192.168.1.126:2000-2099/udpserver {listen 2000-2099 udp reuseport;access_log /var/log/nginx/udp/2000-3000_access.log proxy;error_log  /var/log/nginx/udp/2000-3000_error.log debug;proxy_timeout 5s;proxy_responses 1;proxy_pass 192.168.1.126:$server_port;}
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Nginx用做sip代理":http://eshow365.cn/6-37811-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!