代理概念理解和nginx的端口转发

什么是代理?

现实生活中,有许多事自己无法办或者做起来很费劲,这时便想到了找人帮忙,即代理人。海外代购就是个很好的例子,代购者帮客户购买商品,成为客户与商家之间的媒介。计算机世界也是如此,代理proxy是一种常见的工具。代理分为正向代理和反向代理。

正向代理

web服务通常的模式是client-server,即client端发送request,经Intenet到达server端,server端处理请求,返回response至client端。正向代理是基于client端而言,参见下图:


forward proxy

上图描绘了正向代理的情形。代理拿到client端的请求,代替User访问相应的网站或服务器。简而言之,正向代理是client端的代理,作为client端至intenet中间的媒介。还是海外代购的例子,买家为client端,商家为server端,代购者就是正向代理。图中的User可以有很多,proxy可以代理一群User。

反向代理

反向代理是基于服务器端的。提到反向代理,就不得不说大名鼎鼎的Nginx,一个很有名的反向代理服务器,这个下一节会讲到。反向代理的示意图如下:


reverse proxy

client端的请求过来,由反向代理服务器处理,再分发给实际的服务器处理请求。这样做至少有两个好处,一个是安全,避免暴露真实的服务器在外面,另一个是可以实现负载均衡,当请求数以亿记时,可以按服务器集群的负载情发送请求,不至于阻塞。打个比方,淘宝某个店有多个客服人员,当很多买家同时需要询问时,需要一个系统将询问发送至空闲的客服人员那边。客服人员比作真实服务器,那个分发消息的系统就可以看作反向代理服务器。

nginx的端口代理转发

真实场景:我有一个腾讯云服务器,腾讯云是有安全组的,限制端口的访问。现在我放开了某个端口,比如3389,服务器上有两个flask进程,分别监听3001和3002端口。那么我需要用nginx实现访问3389端口时,nginx能根据path转发到相应的端口,如:输入http://x.x.x.x:3389/alice时转到http://x.x.x.x:3001/alice,输入http://x.x.x.x:3389/bob时转到http://x.x.x.x:3002/bob
解决方法:利用nginx的端口转发功能。

  1. 输入命令 nginx -t,这是一个判断nginx配置文件格式是否正确的命令,可以用来查找nginx配置文件的路径;
  2. 输入命令 vim /etc/nginx/nginx.conf,编辑以下配置信息。服务器监听3389端口,依据location的不同,映射到不同的端口;
server{
        listen 3389;
        server_name locahost;
        location /alice {
        proxy_pass http://127.0.0.1:3001;
    }
        location /bob {
        proxy_pass http://127.0.0.1:3002;
    }
  1. 输入命令 nginx -t,验证配置文件格式正确;
  2. 输入命令 nginx -s reload,使配置改动生效。
    至此,一个简单的端口转发就实现了。

nginx小白,望高手指点。转载请注明,谢谢。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,284评论 21 356
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,811评论 24 1,002
  • 最近一直在忙盲茫,没有时间停下来…我觉得自己披了一层坚实的盔甲,无所不能,所向披靡。 闲来翻开张爱玲的佳作,已经读...
    文笙潇潇阅读 340评论 0 0
  • 时间:12月25日 小脑袋想一想:什么时间,什么地方,发生了什么事?他们说了什么?后来呢? 提示:比比谁笔下的大老...
    杨洋yang阅读 681评论 0 0