【tcp】反向代理服务器,怎么实现的链路中的端口转换?

【tcp】反向代理服务器,怎么实现的链路中的端口转换?,第1张

客户端 A,ip为 A_ip,端口为 A_random_port

反向代理 B,ip 为 B_ip ,监听端口为固定的 443

后端 C,ip 为 C_ip ,监听端口为固定的 443

以一条反向代理连接为例,链路为:

A_ip: A_random_port ----- B_ip:443 ----- B_ip:B_random_port ---- C_ip:443

A:A_random_port ---- B1:443 ---- B2:B_random_port ---- C:443

B1 和B2 ip 相同,监听的端口不同

B1 监听固定端口443,B2监听的是一个随机端口

具体一点:

192.168.1.101:12345 <----> 192.168.1.102:443 <---->192.168.1.102:45678 <--->192.168.1.103:443

A是纯粹的客户端 ;B既作为A的服务端,又作为C的客户端;C纯粹的服务端。

B 作为 C的客户端,发起socket连接时,会向反向代理服务器内核申请注册一个空闲的随机端口。

A:A_random_port ---- B1:443 和 B2:B_random_port ---- C:443 这两段链路socket好理解。

但是 B1:443 ---- B2:B_random_port 这段链路 nginx反向代理 是怎么实现的?

对nginx来说就是同一块内存,后面的链接的直接从前面那段链接的结尾的内存地址开始读。

首先上下游都建立好tcp链接,然后上游收到一个报文后会把报文头去掉,把payload临时存到一个地方,然后有个指针指向该内存,接着就会构筑往后发送的报文头,从该指针获取内容,拼接成一个往后发的报文,然后发出去。

nginx中两个模块有proxy_pass指令,用于反向代理配置项,分别是:

ngx_http_proxy_module

ngx_stream_proxy_module

ngx_http_upstream_module

nginx + keepalived,实现反向代理的高可用

用户公网IP:随机端口 ----> www.example.com:20080----(NAT)-- >outer_nginx_vip:20080 ---->nginx01_ip:随机端口 ----->upstream:20080

跟没有vip 的代理链路比,outer_nginx_vip:20080 ---->nginx01_ip:随机端口 这段链路ip有了变更,跟后端交互时并不是使用物理nginx01_ip,而是使用虚拟的outer_nginx_vip,这跟keepalived的网络实现有关,当然此处outer_nginx_vip 和nginx01_ip 是同一个mac地址。

tcp四次挥手状态 TIME_WAIT

https://www.jianshu.com/p/3658730d76d7

How to view and edit the ephemeral port range on Linux?

https://stackoverflow.com/questions/28573390/how-to-view-and-edit-the-ephemeral-port-range-on-linux

nginx使用proxy_bind负载tcp socket,解决代理端口耗尽

https://b.sundayle.com/nginx-proxy-65535-port

如何解决使用nginx作为反向代理端口耗尽问题?

https://blog.csdn.net/michaelwoshi/article/details/120170134

Overcoming Ephemeral Port Exhaustion in NGINX and NGINX Plus

https://www.nginx.com/blog/overcoming-ephemeral-port-exhaustion-nginx-plus

设置网站代理:以微软自带浏览器为例 扩展中查找小插件:SwitchyOmega 搜索插件获取获取之后在网站右上角显示 点击小插件选项-->proxy-->代理服务器IP-->监听端口(端口与小飞机中选项设置的本地代理端口一致)-->应用设置监听端口


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/592190.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-08
下一篇2023-07-08

发表评论

登录后才能评论

评论列表(0条)

    保存