Nginx正向代理与反向代理

简介: Nginx正向代理与反向代理

1 介绍

实践中客户端无法直接跟服务端发起请求的时候,我们就需要代理服务。代理可以实现客户端与服务端之间的通信,我们的Nginx也可以实现相应的代理服务。代理分为正向代理和反向代理,此文就来演示一下Nginx配置正向代理和反向代理的场景。


1.1 正向代理举例

就是传说中的代理,他的工作原理就像一个跳板。简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录。结论就是,正向代理,是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。


1.1 反向代理举例

例用户访问 http://ooxx/readme但ooxx上并不存在readme页面他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户

但用户并不知情这很正常,用户一般都很笨

这里所提到的 ooxx这个域名对应的服务器就设置了反向代理功能

结论就是 反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。


2正向代理和反向代理的区别

正向代理和反向代理的区别我在知乎上找到两张图可以帮助我们很好的理解:

5cdd11bbc6a1b75bb14c03ae8f0d0073.jpg


正向代理是客户端代理,反向代理是服务端代理,


2.1 正向代理:客户端 <一> 代理 一>服务端

正向代理简单地打个租房的比方:


A(客户端)想租C(服务端)的房子,但是A(客户端)并不认识C(服务端)租不到。

B(代理)认识C(服务端)能租这个房子所以你找了B(代理)帮忙租到了这个房子。


这个过程中C(服务端)不认识A(客户端)只认识B(代理)

C(服务端)并不知道A(客户端)租了房子,只知道房子租给了B(代理)。


2.2 反向代理:客户端 一>代理 <一> 服务端

反向代理也用一个租房的例子:


A(客户端)想租一个房子,B(代理)就把这个房子租给了他。

这时候实际上C(服务端)才是房东。

B(代理)是中介把这个房子租给了A(客户端)。


这个过程中A(客户端)并不知道这个房子到底谁才是房东

他都有可能认为这个房子就是B(代理)的


由上的例子和图我们可以知道正向代理和反向代理的区别在于代理的对象不一样,正向代理的代理对象是客户端,反向代理的代理对象是服务端。

目录
相关文章
|
3月前
|
应用服务中间件 nginx
百度搜索:蓝易云【如何用NGINX实现UDP四层反向代理?】
请注意,这个回答是基于NGINX目前的特性和功能,如果有新的版本或更新的特性,建议查阅NGINX官方文档或其他权威资源,以确保你得到最准确的配置信息。
33 0
|
3月前
|
JSON 应用服务中间件 API
利用Grafana的API Key+Nginx反向代理实现Grafana免登录访问
利用Grafana的API Key+Nginx反向代理实现Grafana免登录访问
98 1
|
3月前
|
负载均衡 应用服务中间件 nginx
nginx-tomcat反向代理以及负载均衡测试
nginx-tomcat反向代理以及负载均衡测试
|
8天前
|
域名解析 缓存 负载均衡
Nginx正向代理域名的配置
Nginx正向代理域名的配置
|
19天前
|
应用服务中间件 nginx
nginx进行反向代理的配置
在Nginx中设置反向代理的步骤:编辑`/etc/nginx/nginx.conf`,在http段加入配置,创建一个监听80端口、服务器名为example.com的虚拟主机。通过`location /`将请求代理到本地3000端口,并设置代理头。保存配置后,使用`sudo nginx -s reload`重载服务。完成配置,通过example.com访问代理服务器。
25 0
|
1月前
|
负载均衡 应用服务中间件 Linux
|
2月前
|
tengine Rust 负载均衡
反向代理学习笔记(一) Nginx与反向代理绪论
反向代理学习笔记(一) Nginx与反向代理绪论
|
2月前
|
负载均衡 Java 应用服务中间件
|
2月前
|
消息中间件 关系型数据库 MySQL
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
63 0
|
3月前
|
应用服务中间件 nginx
4.5.1 Nginx反向代理与系统参数配置conf原理
4.5.1 Nginx反向代理与系统参数配置conf原理