nginx的正向与反向代理

正向代理与反向代理的区别     

虽然正向代理和反向代理都涉及代理服务器接收客户端请求并向服务端转发请求,但它们之间存在一些关键的区别:

正向代理:


        在正向代理中,代理服务器代表客户端向服务器发送请求,并将服务器端响应返回给客户端。
客户端需要配置请求发送至代理服务器,并且服务器不会直接知道客户端的真实 IP 地址,只能看到代理服务器的 IP 地址。
正向代理通常用于绕过网络访问限制、保护客户端隐私、实现匿名访问等场景,例如访问被封锁的网站或保护内部网络安全访问外部网络,常见的有路由器、防火墙等。


反向代理:


        在反向代理中,代理服务器代表服务器接收客户端请求,并将请求转发给实际提供服务的服务器。代理服务器接收来自客户端的请求,并决定将请求转发给哪个后端服务器。
客户端只知道代理服务器的 IP 地址,不知道提供服务的真实服务器。
反向代理通常用于负载均衡、缓存加速、安全策略、SSL 终结等场景,可以提高网站的性能、可用性和安全性。
总的来说,正向代理是客户端选择性使用的代理服务器,而反向代理是提供服务的服务器端使用的代理服务器。区别主要在于代理服务器代表谁和谁向谁转发请求。

反向代理配置案例:

1、创建好一个访问页面

2、、配置反向代理

配置参数详解:

        proxy_pass 表示真是服务器的IP地址,也就是web服务器的IP地址;proxy_set_header Host $http_host; 表示重新定义转发给web服务器的请求头部,即在请求头部添加客户端真实地址;proxy_set_header X-Real-IP $remote_addr; 表示记录客户端真实IP地址proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 表示记录服务端反向代理服务器的ip地址proxy_connect_timeout 表示反向代理服务器对web服务器发起TCP三次握手的连接超时时间; proxy_send_timeout 表示web服务器给反向代理服务器返回资源过程中的超时时间proxy_read_timeout 表示TCP长连接的超时时间proxy_buffering 表示开启缓存功能proxy_buffer_size 表示存放响应头部的缓冲区proxy_buffers 表示内容缓冲区大小proxy_busy_buffers_size 表示用于向客户端发送资源的缓冲区,反向代理服务器会划分出一部分用于发送资源的缓冲区;
#       proxy_max_temp_file_size 256;表示用于存储请求头部的缓冲区,反向代理服务器会将超大的请求头部在缓冲区内存储成文件。

proxy_set_header 都是关于修改请求配置。而示例中的配置表示,反向代理服务器将自身ip地址与客户端的真实IP地址一同添加到请求头部,,再转发给web服务器。

注意:nginx配置反向代理服务器之后,nginx不在提供web功能。

测试:通过访问反向代理服务器IP来访问web网站。

上图显示成功通过反向代理服务器IP访问web网站,说明反向代理配置已经生效。

        查看web服务器中的访问日志,IP地址192.168.40.188在访问日志中表示客户端的IP地址。在访问日志的结尾比平常多一个IP地址,这就是真实客户端的IP地址,说明IP地址192.168.40.188是一个代理服务器IP地址。之前所以客户端真实地址在访问日志中出现,是因为之前对请求头部信息的修改配置生效,nginx将代理ip地址与客户端的真实IP地址都写到了请求头部中。web服务器收到带有客户端的真实ip地址的请求信息,就将客户端的真实IP地址与代理IP地址一同写入访问日志。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ctfshow-web入门-php特性(web104-web108)

目录 1、web104 2、web105 3、web106 4、web107 5、web108 1、web104 需要传入的 v1 和 v2 进行 sha1 加密后相等。 解法1: 这里都没有判断 v1 和 v2 是否相等,我们直接传入同样的内容加密后肯定也一样。 ?v21 post: v11 拿到 flag…

SQL 多变关联使用子查询去重

不去重状态 select a.*,b.recon_amt from free_settlement_first aleft join free_settlement_second b on a.settlement_first_id b.settlement_first_id 有2条数据出现了重复 使用子查询去重 select a.*,b.recon_amt from free_settlement_first aleft join free_settlem…

Vue 最新动态!!!

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 当Vue 3.4在六个月前发布时,整个前端开发社区都为之振奋。这次更新不仅带来了许多新特性,还解决了许多开发过程中遇到的痛点。 然而,时间飞逝,随着我在项目中不断应用这些新特性,逐渐积累了很多宝贵的经验和心得。 今…

一篇学通Axios

Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 node.js 环境。它提供了一种简单易用的方式来发送 HTTP 请求,并支持诸如请求和响应拦截、转换数据、取消请求以及自动转换 JSON 数据等功能。 Axios 名字的由来 Axios 的名字来源于希腊神话中的…

Linux操作系统入门(适用java软件开发)

1.什么是操作系统? 操作系统(Operating System,简称 OS)是一种系统软件,它管理和控制计算机硬件与软件资源,为用户和应用程序提供一个接口和环境来访问计算机系统的服务和功能。操作系统的主要目标是提供一个方便、有…

探索性数据分析:使用Python与Pandas库实现数据洞察

探索性数据分析:使用Python与Pandas库实现数据洞察 引言 在当今数据驱动的时代,数据分析已成为决策制定、策略规划和业务优化的关键环节。无论是商业智能、金融分析还是市场研究,数据分析都扮演着至关重要的角色。Pandas库作为Python生态系统…

微积分-导数8(线性近似和微分)

线性近似 我们已经看到,在切点附近,曲线与其切线非常接近。事实上,通过放大可微函数图上的某一点,我们注意到图形看起来越来越像它的切线(见图)。这一观察是找到函数近似值的方法的基础。 这个想法是&am…

monodepth代码与原理对照实现

先实现demomonodepth/monodepth_simple.py at master mrharicot/monodepth GitHub import os os.environ[TF_CPP_MIN_LOG_LEVEL]0 这行代码是为tensorflow设置环境变量TF_CPP_MIN_LOG_LEVEL,用来控制tensorflow c后端输出的日志级别。0就是输出所有级别的日志信息。包括(调…

vue2学习笔记3 - 开发环境知识补充:live server简介

学习笔记1搭建开发环境中,在vs code里安装了live server插件,后续多次使用open with live server来打开浏览器,展示代码运行效果。本着知其然也要知其所以然的态度,稍稍了解了一下Live server。 什么是Live Server Live Server是…

滞后序列分析案例详解

一个半小时 超出30分钟 日期:2024-07-13 19:14:33 回放 摘要 Python在行为分析中的应用 主要讲述了如何使用Python处理序列数据,以及如何结合定性分析和定量分析来全面分析课程内容。讲者提到了一种叫做分层法的分类方法,该方法使用了布鲁…

ctfshow-web入门-php特性(web96-web99)

目录 1、web96 2、web97 3、web98 4、web99 1、web96 试了下通配、转义、拼接、大小写都不行 这里使用绝对路径或者当前路径绕过: ?u./flag.php ?u/var/www/html/flag.php 还可以使用 php 伪协议: ?uphp://filter/resourceflag.php 2、web97 关…

数据结构(Java):力扣Stack集合OJ题

1、括号匹配问题 . - 力扣(LeetCode) 1.1 思路分析 根据栈的先进后出原则,我们可以这样解决问题: 遍历字符串,遇见左括号就将左括号push入栈;遇见右括号就pop出栈,将出栈的元素和该右括号比较…

pyparsing开启调试

在要匹配的表达后添加set_debug

【密码学】实现消息认证或数字签名的几种方式

消息认证的目的是验证消息的完整性和确认消息的来源。数字签名的目的是不仅验证消息的完整性和来源,还提供了不可否认性。此外,数字签名还可以验证消息的创建时间,防止重放攻击。那么具体有哪些实现的方式呢? 一、仅提供消息认证…

文件内容查阅

cat concatenate files and print on the standard output Linux中一个最简单的且最常用的命令是cat命令。其功能是在终端设备上显示文件内容。 cat命令-n选项用于显示行号。 tac concatenate and print files in reverse tac命令的功能是用于反向显示文件内容,即…

计算机网络复习笔记【面向考纲整理】

计算机网络复习笔记 一、计算机网络体系结构(一)计算机网络的概念、分类、组成与功能1.计算机网络的概念、组成与功能1.1计算机网络的概念1.2计算机网络的组成1.3计算机网络的功能 2.计算机网络的分类3.计算机网络的标准化工作及相关知识 (二…

MT6816磁编码IC在工控机器人中的应用

在现代工业自动化领域,高精度的位置检测和控制技术对于机器人系统的稳定运行至关重要。MT6816磁编码IC作为一款先进的磁传感器解决方案,以其卓越的性能和稳定性,在工控机器人中得到了广泛的应用。本文将详细探讨MT6816磁编码IC在工控机器人中…

azure学习在日本IT工作的重要性

在日本数字化转型的浪潮中,微软Azure已经成为众多企业的首选云平台。作为全球第二大云服务提供商,Azure在日本市场的重要性与日俱增。本文将探讨为什么学习Azure对日本IT专业人士至关重要,以及如何通过lalapodo云原生技术的培训课程,快速掌握这一关键技能。 Azure在日本的战略地…

【Django+Vue3 线上教育平台项目实战】构建高效线上教育平台之首页模块

文章目录 前言一、导航功能实现a.效果图:b.后端代码c.前端代码 二、轮播图功能实现a.效果图b.后端代码c.前端代码 三、标签栏功能实现a.效果图b.后端代码c.前端代码 四、侧边栏功能实现1.整体效果图2.侧边栏功能实现a.效果图b.后端代码c.前端代码 3.侧边栏展示分类及…

element UI时间组件两种使用方式

加油&#xff0c;新时代打工&#xff01; 组件官网&#xff1a;https://element.eleme.cn/#/zh-CN/component/date-picker 先上效果图&#xff0c;如下&#xff1a; 第一种实现方式 <div class"app-container"><el-formref"submitForm":model&q…