前言

这篇文章之前是写完了,不过由于我妻子看过之后,对这篇文章的评价是:写的不错,语句是通顺的,排版是可以的,但代理是什么还是不清楚?所以我感觉之前写的是失败的,所以才有了现在这一篇。

接下来我会尝试面向大众,来解释“代理”的概念。

概念实例化

在讲代理的概念之前我先讲个类比。也是我向大人解释的过程。

还好我反应机敏,要不然这个月的零花钱就要替我挡一刀了。可是我该怎么解释呢?还要让没有编程语言基础的人也听懂,伤脑筋啊!

在没有思绪的时候,她突然问我晚上吃了没有?这不就是很好的例子吗?

解释了这么久,不知道是真的懂了,还是因为太困了。不过我有钱吃肉了。

接下来我们正经的说说“正向代理”和“反向代理”

概念

首先附上正儿八经的说明图,先有一个整体的理解。

然后很官方的解释它们的概念:

正向代理( Forward Proxy ):是指是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容, 客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

反向代理( Reverse Proxy ):是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

接下来我提炼一下各自的特点。

特点

正向代理

  1. 代理客户;
  2. 隐藏真实的客户,为客户端收发请求,使真实客户端对服务器不可见;
  3. 一个局域网内的所有用户可能被一台服务器做了正向代理,由该台服务器负责 HTTP 请求;
  4. 意味着同服务器做通信的是正向代理服务器;

反向代理

  1. 代理服务器;
  2. 隐藏了真实的服务器,为服务器收发请求,使真实服务器对客户端不可见;
  3. 负载均衡服务器,将用户的请求分发到空闲的服务器上;
  4. 意味着用户和负载均衡服务器直接通信,即用户解析服务器域名时得到的是负载均衡服务器的 IP ;

共同点

  1. 都是做为服务器和客户端的中间层
  2. 都可以加强内网的安全性,阻止 web 攻击
  3. 都可以做缓存机制

说了这么多,现在说说代理在工作中的时机应用场景吧。

实际应用

Nginx 服务器

Nginx 服务器的功能有很多,诸如反向代理、负载均衡、静态资源服务器等。

客户端本来可以直接通过 HTTP 协议访问服务器,不过我们可以在中间加上一个 Nginx 服务器,客户端请求 Nginx 服务器,Nginx 服务器请求应用服务器,然后将结果返回给客户端,此时 Nginx 服务器就是反向代理服务器。

在虚拟主机的配置中配置反向代理

# 虚拟主机的配置
server {listen 8080;                         # 监听的端口server_name  192.168.1.1;            # 配置访问域名root  /data/toor;                    # 站点根目录error_page 502 404 /page/404.html;   # 错误页面location ^~ /api/  {                        # 使用 /api/ 代理 proxy_pass 的值proxy_pass http://192.168.20.1:8080;    # 被代理的应用服务器 HTTP 地址}
}
复制代码

以上简单的配置就可以实现反向代理的功能。

当然反向代理也可以处理跨域问题,在 Vue 中就可以使用 proxyTable 这个属性进行相关的配置来解决跨域问题带来的烦恼。配置如下:

...
proxyTable: {'/weixin': {target: 'http://192.168.48.11:8100/', // 接口的域名 secure: false,      // 如果是 https 接口,需要配置这个参数changeOrigin: true, // 如果接口跨域,需要进行这个参数配置pathRewrite: {'^/weixin': ''}},
},
...
复制代码

负载均衡的配置

# upstream 表示负载服务器池,定义名字为 my
upstream my {server 192.168.2.1:8080 weight=1 max_fails=2 fail_timeout=30s;server 192.168.2.2:8080 weight=1 max_fails=2 fail_timeout=30s;server 192.168.2.3:8080 weight=1 max_fails=2 fail_timeout=30s;server 192.168.2.4:8080 weight=1 max_fails=2 fail_timeout=30s;# 即在 30s 内尝试 2 次失败即认为主机不可用}
复制代码

负载均衡即将 请求/数据 轮询分摊到多个服务器上执行,负载均衡的关键在于 均匀

也可以通过 ip-hash 的方式,根据客户端 ip 地址的 hash 值将请求分配给固定的某一个服务器处理。

另外,服务器的硬件配置可能不同,配置好的服务器可以处理更多的请求,这时可以通过 weight 参数来控制。

以上。

前端词典系列

《前端词典》这个系列会持续更新,每一期我都会讲一个出现频率较高的知识点。希望大家在阅读的过程当中可以斧正文中出现不严谨或是错误的地方,本人将不胜感激;若通过本系列而有所得,本人亦将不胜欣喜。

如果你觉得我的文章写的还不错,可以关注我的微信公众号,公众号里会提前剧透呦。

你也可以添加我的微信 wqhhsd, 欢迎交流。

传送门

  1. 【前端词典】滚动穿透问题的解决方案

【前端词典】和媳妇讲代理后的意外收获相关推荐

  1. 谈谈与Elasticsearch创始人Shay Banon面对面交流后的意外收获

    还记2017年11月,当时在阿里巴巴云栖大会上Elasticsearch与阿里云宣布达成战略合作,为中国市场提供崭新的用户体验. 当时在现场听完Elasticsearch创始人 Shay Banon的 ...

  2. 【前端词典】进阶必备的网络基础(下)

    前言 在上一篇我提到了前端面试频率较高的几个网络基础知识,这一篇我会把上一篇遗留的五个尽力讲清楚.如果还没有来得及看上一篇,那么现在可以一起看. 目录 接下来我会讲以下内容: 五类 IP 地址 跨域的 ...

  3. 【前端词典】如何向老板解释反向代理

    [前端词典]如何向老板解释反向代理 前言 现在看到的这篇文章是修改后的第三个版本. 由于我家老板看过之后,对这篇文章的评价是:写的不错,语句是通顺的,排版是可以的,但反向代理是什么还是不清楚?所以我就 ...

  4. 页面无法滚动_【前端词典】滚动穿透问题的解决方案

    点击上方"前端真好玩",喜欢他就关注他 听说,看恺哥的文章会上瘾 背景 产品有三宝,弹窗,浮层加引导: 设计有三宝,透明,阴影加圆角: 运营有三宝,短信,推送加红包: 程序员有一宝 ...

  5. 【前端词典】分享 8 个有趣且实用的 API

    前言 在日常开发中总是和各种 API 打交道,我们名为前端工程师实为 API 调用工程师.这篇文章我就分享 8 个有趣的 API,你若通过阅读这篇文章对前端增加一点点的乐趣,对我来说也是一种鼓励. 这 ...

  6. 前端岗位初入职场后的最初一段时间需要做什么

    文章题目有点长,叫 <前端岗位初入职场后的最初一段时间需要做什么>,说下写这篇文的初衷,在前端自学团里有很多刚毕业或者是刚从培训班出来的同学,在群里天天讨论着找工作和面试的事情,面试的题在 ...

  7. PHP、Tomcat获取Nginx代理后的客户端真实IP

    PHP.Tomcat获取Nginx代理后的客户端真实IP 文章目录 PHP.Tomcat获取Nginx代理后的客户端真实IP 一.PHP获取Nginx代理后客户端真实IP Nginx配置 PHP配置 ...

  8. mitmproxy配置代理后 APP连接不到网络 XPosed安装

    本文仅供学习交流使用,如侵立删! mitmproxy配置代理后 APP连接不到网络 配置mitmproxy代理后,有些APP会出现连接不到网络的情况 原因:SSL证书问题 Android5.1系统版本 ...

  9. Fiddler 4设置代理后无法上网的问题解决办法(亲测有效)

    打开注册表,regedit:  打开Fiddler--Rules--Customize Rules 手机设置代理后无法上网的问题解决可参考此文: https://www.jianshu.com/p/1 ...

最新文章

  1. 各种图论模型及其解答(转)
  2. (转)Symbian启动J2ME程序
  3. Java中的List接口实现类LinkedList
  4. 安装配置opensips过程记录
  5. Linux下如何安装软件
  6. [svc]mousedos网络批量部署xp
  7. android获取mp3/mp4媒体信息
  8. 50个最常用的Unix/Linux命令
  9. Web 网站架构的演变历程
  10. mysql dump 1449_mysqldump 1449错误解决办法
  11. 2021.07.28
  12. 【论文导读】Self-Supervised Learning with Data AugmentationsProvably Isolates Content from Style
  13. 图片素材类网站必备以图搜图、智能搜图识图图像搜索系统imgso,让素材网站更智能专业
  14. 1259: [蓝桥杯2015初赛]三羊献瑞 C/C++
  15. 查看linux下dhcp服务器分配出去的IP地址及剩余IP地址
  16. educoder(头歌)-CSS从入门到精通-基础知识
  17. iOS应用之微信支付集成-直接前端集成
  18. python房屋租赁管理系统设计与实现报告_基于web的房屋出租管理系统的设计与开发.doc...
  19. 人人用得着的IE插件屏蔽工具Upiea
  20. android 鼠标 悬浮,鼠标悬浮球不闪退版本下载-鼠标悬浮球 安卓版v1.1-PC6安卓网...

热门文章

  1. Nginx笔记总结八:ngx_http_core_module模块中的变量
  2. AC日记——行程长度编码 openjudge 1.7 32
  3. 求幂运算、多项式乘法及Horner法则的应用
  4. asp.net MVC 路由机制 Route
  5. 加解压开源组件-SharpZipLib
  6. android 开发错误点滴积累--Asset资源管理
  7. 小猿圈web前端简述canvas如何实现二维码和图片合成
  8. SpringMvc之整合DWR3.0.0推送消息
  9. vi/vim 中批量在行插入或删除指定字符
  10. tomcat的简单认识