一、前言
在正式生产环境中,web服务器、反向代理服务器的选择大都会选择nginx,确实,在常见的高并发场景下,nginx能够支持以万为单位的并发请求量,并且服务性能稳定,应用极为广泛。
二、反向代理含义
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率
图解如下:
2.1 特点
1.反向代理服务器是介于用户和服务器之间的
2.用户直接访问代理服务器,以为代理服务器就是真实的服务器.
3.用户不清楚真实的服务器到底是谁.
4.反向代理是服务器端代理.保护了真实的服务器信息.
5.反向代理主要的作用 访问服务器获得服务器数据的.
今天主要来说下利用nginx来作反向代理服务器,前提环境如下:
经常会遇到类似项目对接,客户拥有自己的运维团队,需要我们作为乙方去对接甲方的场景,在比较正式的管理团队下,甲方团队只提供对应的网络流量接入 ,而需要乙方去实现流量接入以及对外转发,
例如:
通过 SLB ——》 WAF ——》web中转服务器 ——》目标集群中对应的某台机器端口 【假设80端口】 。 域名已绑定至目标机器。
当正式项目在需要部署以及流量转发时,这时需要怎么做呢?
通过流量接入口的这台机器来做目标集群内的反向代理服务器,来实现后端服务器的转发。nginx即可实现这个功能
三、实现方式
这里server name为定义的指定的域名信息, 假设已绑定的域名为testgray.hwwd2.com
proxy_pass 为对应转发的后端服务器的信息,这里以127.0.0.1:8080 作为后端服务入口地址
server{
listen 80;
server_name testgray.hwwd2.com;
#client_max_body_size 20M;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://127.0.0.1:8080;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
注:
同一个端口可以带多个域名,域名匹配不同的后端服务器IP
四、为什么用nginx来实现反向代理?
特点:
1.占用内存少 tomcat服务器启动200M Nginx服务器启动时 2M
2.并发能力强 tomcat并发能力150-200左右 Nginx并发能力 3-5万/秒
3.Nginx主要的功能做反向代理
4.Nginx可以作为负载均衡服务器使用