反向代理方式和包过滤方式或普通代理方式并无冲突,因此可以在防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用,正向代理或包过滤方式用于拒绝其他外部访问方式并提供内部网络对外部网络的访问能力。客户端 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监听的是一个随机端口
具体一点:
1921681101:12345 <----> 1921681102:443 <----> 1921681102:45678 <---> 1921681103: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_>利用Nginx反向代理原理,实现集群服务器瞬间故障转移,看用于生产环境中综合设置的例子
#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
proxy_temp_path /data0/proxy_temp_dir;
#设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
#轮询服务器,weight为服务器权重,与访问频率成正比,max_fails最大超时次数,fail_timeout服务器代理监听超时时间
upstream backend_server {
server 19216820343:80 weight=1 max_fails=2 fail_timeout=30s;
server 19216820344:80 weight=1 max_fails=2 fail_timeout=30s;
server 19216820345:80 weight=1 max_fails=2 fail_timeout=30s;
}
server
{
listen 80;
server_name >WebSocket是HTML5下一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的。它与>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)