nginx代理
Nginx代理有正向和反向代理,可以基于osi七层模型中的第四层(传输层)和第七层(应用层)进行代理(nginx 一般支持的是7层代理,支持四层代理一般使用 lvs 或者haprox,但 nginx 从1.9.0 版本开始支持四层代理,但做四层代理时 源码编译需要添加 --with-stream模块,//这里的–with-stream 是添加四层代理模块,可以用来创建其
他业务集群),正向代理代理的对象是客户端,反向代理的对象是服务端,在日常使用中,反向代理web服务器这种方式使用得比较多。Nginx采用C进行编写,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名,其特点是占有内存少,并发能力强。
模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
支持 SSL 和 TLSSNI。
Nginx七层代理和四层代理的区别
1
7层代理是写在http模块中的,而4层代理是写在stream模块中,与http模块并列,且做四层代理时 源码编译需要添加 --with-stream模块进行编译
2
7层和4层代理基于的协议不同,根据OSI七层模型,
第七层是应用层,第四层是传输层,7层代理是协议和内容的交换,(主要支持的协议有http,htps,smtp,ftp,dns,pop3,dhcp等协议,通常是http代理),7层代理可以 基于url和ip以及cookie和请求头 进行分流
—针对web服务,七层通过虚拟的 URL 或主机名接收请求,然后再分配到真实的服务器七层就是基于 URL 等应用层信息的负载均衡;
4层代理是基于ip和端口的转发,是基于TCP/UDP协议,–with-stream 是添加四层代理模块,可以用来创建其他业务集群,比如ssh,mysql
—针对web服务,所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡 设备设置的服务器选择方式,决定最终选择的内部服务器,它一般走的是tcp,udp协议。Eg:
3
写法上的差异
七层代理的写法:
之后开启nginx或者重加载nginx配置,用curl 192.168.2.5可以看到 web1
或web2页面轮询出现,7层代理在proxy_pass上一行多一个location/{,proxy_pass配置行加 http:// 集群名
四层代理的写法:
四层代理设备将client发送报文中的目标地址(原来为四层代理的ip地址)修改为目标内部服务器的地址,这样client就可以和server建立TCP连接并发送数据
在stream中,server一定要配置port,proxy_pass配置行直接加集群名,**不能加http:// **
关于正向/反向代理区别
正向代理是客户端代理,用户清楚的知道访问的服务器是谁. 保护了客户端信息
反向代理是服务器端代理.用户不清楚访问的真实服务到底是谁. 保护了服务端信息
正向代理语法格式:
正向反向代理与这里的$host$request_uri写法有关,反向代理的写
location / {
proxy_pass http://localhost:9001/;
}
从配置来看,正向代理和反向代理的配置区别在于proxy_pass的配置
1.正向代理proxy_pass配置的是动态url
2.反向代理proxy_pass配置的是静态服务器
测试
在linux上测试
curl -I https://xxxxx –proxy proxyserver:port
在windows客户端配置代理服务器
设置完成后,再次通过浏览器访问服务端
四层、七层代理与正向、反向代理的关系:
七层代理可以是正向代理也可以是反向代理,如上方例子中的正反向代理就是基于7层
四层代理都是反向代理,例如上方的ssh,mysql集群的反向代理,或者下方的单个服务反向代理
Nginx代理与负载均衡的关系
在nginx中用到了反向代理,不一定会用负载均衡
在nginx中用到了负载均衡,一定会用反向代理 |