Nginx实现反向代理


Posted in Servers onSeptember 20, 2017

一、代理服务器

1、什么是代理服务器

代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。

Nginx实现反向代理

2、为什么要使用代理服务器

1)提高访问速度

    由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。

2)防火墙作用

    由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。

3)通过代理服务器访问不能访问的目标站点

    互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的翻墙浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。

二、反向代理 VS 正向代理

1、什么是正向代理?什么是反向代理?

正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。

Nginx实现反向代理

反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

Nginx实现反向代理

2、反向代理有哪些主要应用?

现在许多大型web网站都用到反向代理。除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。

三、方向代理服务器Nginx

Nginx作为近年来较火的反向代理服务器,安装在目的主机端,主要用于转发客户机请求,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定哪台目标主机来处理当前请求。下面演示如何进行配置使Nginx发挥作用。

1、模拟n个http服务器作为目标主机

用作测试,简单的使用2个tomcat实例模拟两台http服务器,分别将tomcat的端口改为8081和8082

2、配置IP域名

192.168.72.49 8081.max.com

192.168.72.49 8082.max.com

3、配置nginx.conf

upstream tomcatserver1 {   
server 192.168.72.49:8081;   

 } 

upstream tomcatserver2 {    
server 192.168.72.49:8082;   

} 

 server {    

     listen    80;      

    server_name 8081.max.com;      
    #charset koi8-r;      
    #access_log logs/host.access.log main;      
    location / {       
     proxy_pass  http://tomcatserver1;       

     index index.html index.htm;     

 }      

} 

server {     

      listen    80;     
     server_name 8082.max.com;      
      #charset koi8-r;      
      #access_log logs/host.access.log main;      
     location / {       
     proxy_pass  http://tomcatserver2;       
     index index.html index.htm;     

  }       

 }

流程:

1)浏览器访问8081.max.com,通过本地host文件域名解析,找到192.168.72.49服务器(安装nginx)

2)nginx反向代理接受客户机请求,找到server_name为8081.max.com的server节点,根据proxy_pass对应的http路径,将请求转发到upstream tomcatserver1上,即端口号为8081的tomcat服务器。

4、效果展示

 请求8081.max.com,tomcat1接收返回首页

Nginx实现反向代理

请求8082.max.com,tomcat2接收返回首页

Nginx实现反向代理

四、总结

     通过分析我们不难得出,以百度为例,如果客户机的IP和百度服务器(目标主机)的IP在同一个网段,那就形同局域网内部发送请求,速度极快。

     但如果满足不了这种需求还想到达到一个较好的请求响应时,百度服务器就可以对外提供一个与目标服务器在一个网段的公网IP,也就是反向代理服务的IP,通过代理服务器转发客户机请求,决定幕后的N台服务器谁来处理这个请求,并且由于反向代理服务器与目标主机在一个网段,访问速度也会很快。

     Nginx用作反向代理服务器时,它就是众多反向代理服务器中的一种,通过简单的配置,指定到服务器IP或域名地址便可将客户机请求转发给指定服务器处理请求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。


Tags in this post...

Servers 相关文章推荐
apache基于端口创建虚拟主机的示例
Apr 22 Servers
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
Sep 25 Servers
Nginx 反向代理解决跨域问题多种情况分析
Jan 18 Servers
教你使用Jenkins集成Harbor自动发布镜像
Apr 03 Servers
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
May 25 Servers
阿里云服务器部署RabbitMQ集群的详细教程
Jun 01 Servers
Windows10安装Apache2.4的方法步骤
Jun 25 Servers
使用 DataAnt 监控 Apache APISIX的原理解析
Jul 07 Servers
win7配置本地ftp服务器的图文教程
Aug 05 Servers
Nginx跨域问题解析与解决
Aug 05 Servers
解决ubuntu安装软件时,status-code=409报错的问题
Dec 24 Servers
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
Jun 21 #Servers
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
nginx 设置多个站跨域
Mar 09 #Servers
使用Apache的rewrite
Mar 09 #Servers
Apache站点配置SSL强制跳转443
Mar 09 #Servers
Apache压力测试工具的安装使用
Nginx同一个域名配置多个项目的实现方法
Mar 31 #Servers
You might like
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
python命令行参数用法实例分析
2019/06/25 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
工厂总经理岗位职责
2014/02/07 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
环保倡议书
2014/04/14 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL