Nginx用做sip代理
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
第二步,调整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;}
}
相关文章:
Nginx用做sip代理
https://www.jianshu.com/p/14d134cbf8d3?tdsourcetags_pcqq_aiomsg 看了这篇文章的方案一,我专门试了试,记录如下: 测试环境为: fs1(5080 --- nginx --- fs2(5060) 局域网同一个网段&…...
C# set的一些使用方法
在C#应用中,使用set监控值的改变触发事件是一种非常常见的编程模式。 比如下面一些应用。 1、属性更改通知:当某个属性的值发生变化时,可以使用set监控属性的改变,并触发一个事件来通知其他部分代码。这在MVVM(Model…...
机器学习——回归
目录 一、线性回归 1、回归的概念(Regression、Prediction) 2、符号约定 3、算法流程 4、最小二乘法(LSM) 二、梯度下降 梯度下降的三种形式 1、批量梯度下降(Batch Gradient Descent,BGD)ÿ…...
JAVA代码视频转GIF(亲测有效)
1.说明 本次使用的是JAVA代码视频转GIF,maven如下: <dependency><groupId>ws.schild</groupId><artifactId>jave-nativebin-win64</artifactId><version>3.2.0</version></dependency><dependency&…...
挑战100天 AI In LeetCode Day03(热题+面试经典150题)
挑战100天 AI In LeetCode Day03(热题面试经典150题) 一、LeetCode介绍二、LeetCode 热题 HOT 100-52.1 题目2.2 题解 三、面试经典 150 题-53.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目&am…...
【手写模拟Spring底层原理】
文章目录 模拟Spring底层详解1、结合配置类,扫描类资源1.1、创建需要扫描的配置类AppConfig,如下:1.2、创建Spring容器对象LyfApplicationContext,如下1.3、Spring容器对象LyfApplicationContext扫描资源 2、结合上一步的扫描&…...
代码随想录训练营Day1:二分查找与移除元素
本专栏内容为:代码随想录训练营学习专栏,用于记录训练营的学习经验分享与总结。 文档讲解:代码随想录 视频讲解:二分查找与移除元素 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚…...
回归预测 | Matlab实现PCA-PLS主成分降维结合偏最小二乘回归预测
回归预测 | Matlab实现PCA-PLS主成分降维结合偏最小二乘回归预测 目录 回归预测 | Matlab实现PCA-PLS主成分降维结合偏最小二乘回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现PCA-PLS主成分降维结合偏小二乘回归预测(完整源码和数据) 1.输…...
高效的测试覆盖率:在更短的时间内最大化提高测试覆盖率
软件测试在敏捷开发生命周期中至关重要,而测试覆盖率又是软件测试的一个重要指标,有效的测试覆盖率对软件测试来说永远是重中之重。测试覆盖率确保所有关键功能和特性都经过彻底测试,减少最终产品中出现错误和错误的可能性(取决于…...
Qt 项目实战 | 音乐播放器
Qt 项目实战 | 音乐播放器 Qt 项目实战 | 音乐播放器播放器整体架构创建播放器主界面媒体对象状态实现播放列表实现桌面歌词添加系统托盘图标 资源下载 官方博客:https://www.yafeilinux.com/ Qt开源社区:https://www.qter.org/ 参考书:《Q…...
JavaScript使用Ajax
Ajax(Asynchronous JavaScript and XML)是使用JavaScript脚本,借助XMLHttpRequest插件,在客户端与服务器端之间实现异步通信的一种方法。2005年2月,Ajax第一次正式出现,从此以后Ajax成为JavaScript发起HTTP异步请求的代名词。2006…...
Python爬虫实战-批量爬取美女图片网下载图片
大家好,我是python222小锋老师。 近日锋哥又卷了一波Python实战课程-批量爬取美女图片网下载图片,主要是巩固下Python爬虫基础 视频版教程: Python爬虫实战-批量爬取美女图片网下载图片 视频教程_哔哩哔哩_bilibiliPython爬虫实战-批量爬取…...
uniapp+uview2.0+vuex实现自定义tabbar组件
效果图 1.在components文件夹中新建MyTabbar组件 2.组件代码 <template><view class"myTabbarBox" :style"{ backgroundColor: backgroundColor }"><u-tabbar :placeholder"true" zIndex"0" :value"MyTabbarS…...
opencv 任意两点切割图像
目录 opencv python直线切割图像,把图像分为两个多边形 升级版,把多边形分割抠图出来,取最小外接矩形:...
rust变量绑定、拷贝、转移、引用
目录 一,clone、copy 1,基本类型 2,类型的clone特征 3,显式声明结构体的clone特征 4,类型的copy特征 5,显式声明结构体的clone特征 5,变量和字面量的特征 6,特征总结 二&am…...
Java多种方式向图片添加自定义水印、图片转换及webp图片压缩
给个创建水印的示例: /*** 获取水印** param watermarkText 水印文字* return 水印bufferimage*/public static BufferedImage getWatermark(String watermarkText) {BufferedImage measureBufferdImage new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB…...
基于Pytorch框架的LSTM算法(二)——多维度单步预测
1.项目说明 **选用Close和Low两个特征,使用窗口time_steps窗口的2个特征,然后预测Close这一个特征数据未来一天的数据 当batch_firstTrue,则LSTM的inputs(batch_size,time_steps,input_size) batch_size len(data)-time_steps time_steps 滑动窗口&…...
cnn感受野计算方法
No. Layers Kernel Size Stride 1 Conv1 33 1 2 Pool1 22 2 3 Conv2 33 1 4 Pool2 22 2 5 Conv3 33 1 6 Conv4 33 1 7 Pool3 2*2 2 感受野初始值 l 0 1 l_0 1l 0 1,每层的感受野计算过程如下: l 0 1 l_0 1l 0 1 l 1 1 ( 3 − 1 ) 3 l_1 1…...
百分点科技受邀参加“第五届治理现代化论坛”
11月4日,由北京大学政府管理学院主办的“面向新时代的人才培养——第五届治理现代化论坛”举行,北京大学校党委常委、副校长、教务长王博,政府管理学院院长燕继荣参加开幕式并致辞,百分点科技董事长兼CEO苏萌受邀出席论坛…...
基于Springboot的智慧食堂设计与实现(有报告)。Javaee项目,springboot项目。
演示视频: 基于Springboot的智慧食堂设计与实现(有报告)。Javaee项目,springboot项目。 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 项…...
【2026收藏版】转行成为一名机器学习工程师,可行吗?(小白/程序员必看)
2026年,大模型技术持续爆发,机器学习工程师成为AI领域最热门的岗位之一,很多小白、传统行业从业者甚至在岗程序员,都在犹豫:零基础/跨行业,转行成为机器学习工程师,到底可行吗? 国外…...
传统微波IDU与数字IP微波ODU扩展单元(数字微波IDU)技术对比分析
随着半导体技术的飞速迭代,数字微波通信设备的设计架构实现了从分体式到全室外集成式的跨越式发展,核心组件的功能定位与应用场景也随之发生深刻变革。早期传统数字微波ODU(室外单元)采用IDU(室内单元)与OD…...
python 项目自动生成requirements.txt文件
python 项目自动生成requirements.txt文件本文介绍了如何在Python项目中使用pip freeze和pipreqs工具生成requirements.txt文件,包括基本操作步骤和两种方法的对比,适用于开发者管理项目依赖。requirements.txt文件格式:一键获取完整项目代码…...
AI结对编程实战:软件测试者的代码评审效能革命
在软件开发的效率竞赛中,代码评审环节常被视为质量保障的基石,却也因其高度依赖人工、流程繁琐而成为交付流程中的关键瓶颈。对于软件测试从业者而言,评审不仅是发现缺陷的最后一道防线,更是深入理解系统实现、精准设计验证策略的…...
PyTorch实战:两种方法实现Partial Conv(PConv)提升模型效率,附完整代码
PyTorch实战:两种Partial Conv实现方案深度解析与性能优化 在移动端和边缘计算场景中,模型效率直接决定了产品的用户体验和商业可行性。当我们尝试将ResNet-50这样的经典网络部署到手机端时,常常会面临显存不足和计算延迟的问题——这正是部分…...
从Flink数据源测试出发:手把手教你搭建Kafka 2.5.0单机环境
从Flink数据源测试出发:手把手教你搭建Kafka 2.5.0单机环境 在流处理领域,Kafka作为分布式消息队列的标杆,与Flink的集成已成为实时数据处理的标准组合。本文将从一个实际开发场景切入——当你已经掌握Flink基础概念,正准备测试一…...
哔哩下载姬终极指南:轻松搞定B站视频离线收藏
哔哩下载姬终极指南:轻松搞定B站视频离线收藏 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)。…...
华硕笔记本终极控制方案:G-Helper 3分钟快速上手指南
华硕笔记本终极控制方案:G-Helper 3分钟快速上手指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sca…...
终极免费开源音乐播放器:LX Music桌面版完整使用指南
终极免费开源音乐播放器:LX Music桌面版完整使用指南 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 还在为各大音乐平台的会员费用烦恼吗?想要一个软件就…...
终极QMC音频解密方案:3分钟破解QQ音乐加密格式
终极QMC音频解密方案:3分钟破解QQ音乐加密格式 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder qmc-decoder是一款高效、免费的专业音频解密工具,专门…...
