运维篇—几句话搞明白nginx正向和反向代理的区别
彻底搞明白什么是正向反向代理
一、区别
-
1.代理服务器如果配置在客户端即为正向代理,如果配置在服务端即为反向代理,和机器个数没有关系
-
2.正向代理代替客户端去发送请求,反向代理代替服务端接受请求
-
3.正是因为正向代理代替客户端发送请求,正向代理服务器和客户端对外表现为一个客户端,所以正向代理隐藏了真实的客户端;
反向代理代替服务端接受请求,反向代理服务器和真实服务器对外表现为一个服务端,所以反向代理服务器隐藏真实的服务端
综上,本质上代理服务器还是那个代理服务器,如果替客户端干活就是正向代理,如果替服务端干活就是反向代理;
如下图所示
要清楚的是,服务器由计算机机器+软件构成,没有安装软件的单个计算机机器不构成服务器,就是一堆铜铁加电路等;
服务器不仅可以作为服务端,也可以作为客户端;如果该服务器向某些客户端提供资源,此时就是服务端,同时如果需要向别的服务器请求资源,此时就是客户端。
二、为什么有正向代理及举例
2.1为什么有正向代理
正向代理服务器有客户端缺少的功能,比如可以上网、翻墙等等。假如公司服务器的软件在内网部署访问不了internet,就可以配置一台正向代理服务器,通过正向代理服务器上网。
2.2配置正向代理举例
假设现在有一台主机上不了网,可以通过nginx代理该主机上网,配置如下
server {
listen 80;
server_name 192.168.184.128;
location /proxy_baidu/ {
proxy_pass http://baidu.com/;
}
}
在浏览器中输入http://192.168.184.128/proxy_baidu 即可访问到百度主页
三、为什么有反向代理及举例
3.1为什么有反向代理
在高并发场景下,一个tomcat服务器可能承受不了那么高的并发量和访问量,所以需要多个服务器分担这个工作,而nginx在高并发的场景下表现是尤为突出的,此时nginx就可以代理多个服务器去接收用户请求,最后交给其中一个服务器处理.
如下图所示
3.2配置反向代理举例
在一台服务器上部署两个tomcat,用nginx做反向代理(负载均衡),nginx配置如下
upstream tomcatcluster{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 8090;
server_name localhost;
location / {
proxy_pass http://tomcatcluster;
}
tomcat的两个端口为:8080,8081;nginx监听8090端口请求,将请求交给tomcat两个端口处理
下面在浏览器输入http://192.168.184.128:8090/ 就能访问到tomcat主页
参考博客
更多推荐



所有评论(0)