我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Nginx 正向代理与反向代理实战

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Nginx 正向代理与反向代理实战

1. 正向代理与反向代理的区别
1.1 什么是代理服务器?
所谓代理服务器就是位于发起请求的客户端与原始服务器端之间的一台跳板服务器,正向代理可以隐藏客户端,反向代理可以隐藏原始服务器。

上面描述的还不是特别了解,接下来我们就认识一下正向代理和反向代理的区别

1.2 正向代理的概念
正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。

结论就是:正向代理:客户端 <一> 代理 一>服务端 正向代理,是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

1.3 反向代理的概念
例如:用户访问 http://www.test.com/readme,但 www.test.com 上并不存在 readme 资源,它是偷偷从另外一台服务器上取回来,然后作为转交的内容返回给用户,但用户并不知情。这里所提到的 www.test.com 这个域名对应的服务器就设置来反向代理功能。

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

网友的神图,加深理解

1.4 两者区别
从用途上来讲:

  • 正向代理的典型用途是为在防火墙内的局域网客户端提供访问 Internet 的途径。正向代理还可以使用缓冲特性减少网络使用率。
  • 反向代理的典型用途是将防火墙后面的服务器提供给 Internet 用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级 URL 策略和管理技术,从而使处于不同的 web 服务器系统的 web 页面同时存在于同一个 URL 空间下。

从安全性来讲:

  • 正向代理允许客户端通过它访问任意网站并且因此客户端自身,因此你必须采取安全措施以确保为经过授权的客户端提供服务。
  • 反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。

总结:

  • 开放的反向代理应用: Nginx 和 Nat123。Nginx 是单纯的反向代理,需要自行搭建发现代理服务才能使用,效果高。Nat123 是结合来 NAT 和反向代理的应用,可以直接使用,解决80端口问题等,速度快。

2. Nginx 正向代理与反向代理实战
2.1 正向代理配置场景演示
正向代理很常见,我们正常上网就是一种正向代理。 接下来我们演示正向代理的一个场景:

首先在A服务器(IP:192.168.1.110)的Nginx设置访问控制,访问控制之前访问 A 下的test.html是这样的,如下:

  1. 在A服务器的Nginx修改配置文件,加入一个判断语句,如果访问A的的 IP 不是 192.168.1.44 (B 服务器IP)则返回403.
  1. location / { 
  2.  
  3.   if ( $remote_addr !~* "^192\.168\.1\.44") { 
  4.  
  5.     return 403; 
  6.  
  7.   } 
  8.  
  9.   root html; 
  10.  
  11.   index index.html index.htm; 
  12.  

添加后reload一下nginx再访问test.html,如下:

此时,在 A服务器 的本地浏览器就是被限制来,访问不了该资源。

  1. 接下来,在 B服务器 上修改Nginx配置文件,添加 resolver 和 proxy_pass ,设置如下:
  1. server { 
  2.  
  3.   listen 8080; 
  4.  
  5.   server_name localhost; 
  6.  
  7.   resolver 8.8.8.8; 
  8.  
  9.   location / { 
  10.  
  11.     proxy_pass http://$http_host$request_uri; 
  12.  
  13.   } 
  14.  
  15.   error_page 500 502 503 504 /50x.html; 
  16.  
  17.   location = /50x.html { 
  18.  
  19.     root /usr/share/nginx/html; 
  20.  
  21.   } 
  22.  

resolver 为 DNS 解析,这里填写的IP 为 Google 提供的免费 DNS服务器的IP地址 proxy_pass 配置代理转发

至此便是配置了B服务器所有访问根一级的请求全部代理转发对应到 $http_host$request_uri 去了, $http_host 就是我们要访问的主机名, $request_uri 就是我们后面所加的参数。

简单来说就是相当于配置好了我们请求B服务器,B服务器再去请求我们所请求的地址。

那么接下来我们来看一下结果,我们在本地配置好代理,我这里是mac系统,可以从网络设置中选择高级,然后选择代理。(这里是在 A服务器配置代理)

结果证明,此时在 A服务器 的客户端已经可以成功访问 A 服务器的资源。

以上就是正向代理的一个场景演示,这个过程中可以知道,我们客户端是想要 A 的资源,但是 A 的资源只有 B 能拿到,便让 B 代理去帮助我们访问 A 的资源。整个过程 A 只知道 B 拿了它的资源,并不知道客户端拿到。

2.2 反向代理配置场景演示
反向代理的演示更为简单一些。

  1. 首先我们新建一个test.conf的配置文件,启动对应这个配置文件的服务:
  1. server { 
  2.  
  3.   listen 8080; 
  4.  
  5.   server_name localhost; 
  6.  
  7.   location / { 
  8.  
  9.     root html; 
  10.  
  11.     index index.html index.htm; 
  12.  
  13.   } 
  14.  
  15.   error_page 500 502 503 504 404 /50x.html; 
  16.  
  17.   location = /50x.html { 
  18.  
  19.     root /usr/share/nginx/html; 
  20.  
  21.   } 
  22.  

可以看到 server 里 listen 的端口是8080,这里假设我的服务器本身不对外开放8080端口,只开放了80端口。所以此时访问 test.html 结果是访问不到的.

  1. 修改Nginx的默认配置文件,添加 proxy_pass 设置如下:
  1. server { 
  2.  
  3.   listen 80; 
  4.  
  5.   server_name localhost; 
  6.  
  7.   location / { 
  8.  
  9.     root html; 
  10.  
  11.     index index.html index.htm; 
  12.  
  13.   } 
  14.  
  15.   #设置代理 
  16.  
  17.   location ~ /test.html$ { 
  18.  
  19.     proxy_pass http://127.0.0.1:8080; 
  20.  
  21.   } 
  22.  
  23.   error_page 500 502 503 504 404 /50x.html; 
  24.  
  25.   location = /50x.html { 
  26.  
  27.     root /usr/share/nginx/html; 
  28.  
  29.   } 
  30.  

此时便可以访问8080端口配置的资源了,如下:

以上便完成了一个反向代理的演示,这个过程中我们可以知道,客户端想要访问的是 test.html,但是 test.html 实际上是 8080 端口下配置的,中间经过了代理才能拿到。也就是说客户端并不知道中间经历了什么代理过程,只有服务端知道。客户端只知道他拿到了 test.html 也就是8080端口下配置的资源。

3. 总结
经过对正向代理和反向代理概念上的理解、区别,以及在Nginx下演示操作一遍,相信你可以深刻体会到正向代理与反向代理的区别,以及在Nginx下代理的简单配置。

正向代理和反向代理的区别在于代理的对象不一样,正向代理的代理对象是客户端,反向代理的代理对象是服务端。总结一下:

  • 代理服务器站在客户端那边就是正向代理
  • 代理服务器站在服务器那边就是反向代理
  • Nginx 通过 proxy_pass 可以设置代理服务。

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Nginx 正向代理与反向代理实战

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Nginx 正向代理与反向代理实战

经过对正向代理和反向代理概念上的理解、区别,以及在Nginx下演示操作一遍,相信你可以深刻体会到正向代理与反向代理的区别,以及在Nginx下代理的简单配置。
Nginx2024-12-03

Nginx正向代理与反向代理的含义是什么

这篇文章主要介绍“Nginx正向代理与反向代理的含义是什么”,在日常操作中,相信很多人在Nginx正向代理与反向代理的含义是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Nginx正向代理与反向代理的含义
2023-07-05

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

Nginx是一款非常强大的Web服务器和反向代理服务器。在Nginx中,正向代理和反向代理是两种不同的代理方式,它们在代理方向、代理的角色和应用场景上存在明显的差异。

正向代理和反向代理

什么是代理?什么又是反向代理?为什么有了代理还需要反向代理?他们之间有什么差异?今天我们就来一起聊一聊。

如何玩转Nginx正反向代理

Ngnix大家都比较熟悉,最常见的Web服务器,但是它还有一个常见的用户代理服务器,它支持正向代理,也可以反向代理,用的比较多的,可能还是发现代理;本篇将通过一个实际的场景来介绍一下Nginx的正反向代理分别怎么用。

什么是反向代理?Nginx反向代理如何配置?

在开始本文前,请先保证你的服务器已经安装好nginx,安装nginx非常简单。本文我将以ubantu系统为例,那么怎么在ubantu系统安装nginx呢?

Nginx:不管正向还是反向我通通代理

关于Nginx,除了用它做正常的Web服务器,还经常用它做网络代理服务器使用;来解决网络访问受限的问题。日常大家讨论最多的就是“正向代理”和\"反向代理\"。很多人,经常会弄不明白什么是\"正向代理\",什么又是\"反向代理\",他们之间到底有什么区别

Web反向代理与正向代理的差异是什么

本篇内容介绍了“Web反向代理与正向代理的差异是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  大多数人将代理视为客户端通过它们向网站
2023-06-21

Nginx 反向代理为什么叫做“反向”?

反向代理是一种服务器,它接受客户端的请求,将请求转发给网络服务器,然后将结果返回给客户端,就像代理服务器处理了请求一样。

HTTP中正向代理与反向代理的作用有哪些

小编给大家分享一下HTTP中正向代理与反向代理的作用有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!HTTP应用于许多领域,其应用范围越来越广,这意味着将有更
2023-06-15

阿里云nginx反向代理

阿里云Nginx反向代理的原理是,通过配置指定的规则和算法,将用户的请求指向反向代理服务器上,并在反向代理服务器上执行相应的操作。反向代理服务器负责将请求转发给阿里云服务器,然后返回响应给用户。反向代理可以在不暴露原始API的情况下,实现安全的数据交换。阿里云Nginx反向代理的优点是可以快速地扩展和部署,不需要修改代
2023-10-27

nginx反向代理怎么办

这篇文章将为大家详细讲解有关nginx反向代理怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. nginx配置文件的组成nginx 由以下几部分组成2. nginx 反向代理的使用proxy_pa
2023-06-29

Centos7怎么实现nginx反向代理

本篇内容主要讲解“Centos7怎么实现nginx反向代理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Centos7怎么实现nginx反向代理”吧!反向代理服务器架设在服务器端,通过缓冲经常被
2023-06-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录