Nginx配置端口转发 映射 以及连接超时问题
来源:互联网 发布:yii2开源cms推荐 编辑:程序博客网 时间:2024/05/10 03:49
说到端口转发,就不得不提端口映射,这两个的概念比较容易混淆。喜欢较真的同学就去查查概念吧……
知乎有人说:
端口转发:你给我了,我打开看看,发现这上面标志显示是要给张三,那么我就给张三去。如果标志是给李四,那我就再给李四去。
端口映射:你放到我左手,我就直接给张三;你放到我右手,我就直接给李四。这中间我不管你放我手上的是什么东西。
这里我认为应该叫端口映射为好,但是不管是什么都是用了nginx的反向代理模块。
先看图和业务吧
上面这个图呢,假设我们这五台服务器在一个集群里面,但是呢,由于集群内防火墙的原因,你的电脑只能连接1号机器,2、3、4、5访问不了,这个时候我们就需要在1号机器做做文章。通过访问1号机器的不同端口,来间接地访问后面的其他机器。
假设五台机器的IP分别是192.168.1.10、192.168.1.20、192.168.1.30、192.168.1.40、192.168.1.50
OK!那我们直接自定义端口映射配置下Nginx就好了呗?
No No No!我们再具体一下我们的需求。
我们把连接类型划分一下:两种。
第一种:http(对应Nginx http模块)
第二种:tcp/udp(对应Nginx stream模块)
比如我们的web项目,需要用浏览器访问的或其他的基于http协议的,要配置在http模块下。
像SSH,FTP这些,需要配置在stream模块下。
先说http,比如我们2号机器上有一只汤姆猫,端口8080,这时候我们就需要在Nginx上添加如下配置:
http{ server{ listen 8888; location / { proxy_pass http://192.168.1.20:8080; } }}
这段代码的意思就是,指向我1号机器(192.168.1.10:8888)的连接,都映射到192.168.1.20:8080上面。
如果我们3、4、5机器上面有数据库或者需要SSH连接的话,就要使用stream模块。
Demo如下:
stream{ server{ listen 1521; proxy_timeout 30m; proxy_pass 192.168.1.30:1521; } server{ listen 3306; proxy_timeout 30m; proxy_pass 192.168.1.30:3306; } server{ listen 4022; proxy_timeout 30m; proxy_pass 192.168.1.40:22; } server{ listen 5022; proxy_timeout 30m; proxy_pass 192.168.1.50:22; }}
需要访问什么,加上我们自定义的端口号,就大功告成。比如我们要访问3号机器的MySQL,那么我们数据库连接就配置192.168.1.10:3306这样我们就能通过Nginx来轻松访问到192.168.1.30:3306的数据库了。
这里留意一个参数–”proxy_timeout 30m;“
这个参数不写的话,默认连接超时是10min,比如我们使用filezilla,10分钟没有任何动作的话,你的连接就会被干掉,ssh、数据库也是的。这里我保守设置30min,具体看自己的需求。
注意,这个超时并不会影响传输中的数据,比如我们设置成10s,这时候我们从ftp服务器上面下载一个文件,10s没下载完,且你没有任何动作的话,会提示连接已断开,但是实测文件还能继续传输,这应该是传输文件是单独出来的一个连接的缘故。
最后多说一点Nginx的配置。
worker_processes 2;events{ worker_connections 1024;}
这是Nginx必须的配置,第一个参数,作者推荐写成处理器逻辑核心的个数,实际带来的最直观的效果就是,启动Nginx之后,一个主进程,外加这个参数的个数进程。比如我服务器32逻辑核心,我写了32。启动之后,33个nginx.exe,你闹不闹心,反正我是很闹心。我自己做过压力测试,3000+并发,这个参数写2都没任何问题。所以我推荐写2或者4即可。
第二个参数是最大连接数,这个就看具体使用环境了。几千几万都可以。
最后,我们使用它很方便,最好还能监控。
OK!使用ngx_http_stub_status_module
具体的配置写在http模块下
server{ location /basic_status { stub_status; } }
这时候我们访问http://192.168.1.10/basic_status,我们就能看到效果了。 文本如下:
Active connections: 22
server accepts handled requests
453 453 67
Reading: 0 Writing: 1 Waiting: 0
第一个就是当前活动的连接数
下面的三个数值分别是 处理连接数/创建握手数/处理请求数
———————————————————————
嗯……文章中有什么不对或者不妥的地方欢迎提出来
阅读全文
0 0
- Nginx配置端口转发 映射 以及连接超时问题
- nginx 配置端口转发
- nginx超时转发请求问题
- nginx 端口转发跳转问题
- nginx超时转发机制
- nginx 转发请求超时
- Nginx配置proxy_pass 转发问题
- nginx做非80端口转发丢失端口的问题
- Nginx关于连接超时配置的实验
- nginx端口转发
- nodejs使用nginx端口转发,端口映射,反向代理,子域名映射到不同端口
- nginx监听一个端口多域名转发配置
- centos7 nginx安装及配置端口转发实战
- windows下配置nginx非80端口转发
- Nginx配置proxy_pass转发的/路径问题
- nginx转发配置shipyard遇到的问题
- Nginx配置proxy_pass转发的/路径问题
- Nginx配置proxy_pass转发的/路径问题
- 兄弟连学python(01)——python 简单的循环用法
- 世界上第一个高级语言——FORTRAN
- 嵌入式项目1--嵌入式软件组代码规范
- C# WindowForm 三句话实现简单计算器
- 关于nodejs作为系统中间件的理解
- Nginx配置端口转发 映射 以及连接超时问题
- 润乾报表 dql分析页面如何为字段设置编辑风格
- 蚁群算法MATLAB程序
- (二)java框架篇笔记库(22)
- SDNU OJ 1171 合并果子 (附带1013)
- c#写入数据到excel中
- Spring @Scheduled 定时任务
- UnityShader初级篇——透明度混合
- 基于Unity3D的相机功能的实现(八)—— 收藏篇