nginx的正向与反向代理

news2024/11/13 15:21:35

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

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

正向代理:


        在正向代理中,代理服务器代表客户端向服务器发送请求,并将服务器端响应返回给客户端。
客户端需要配置请求发送至代理服务器,并且服务器不会直接知道客户端的真实 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应该是192.168.40.186的)

上图显示成功通过反向代理服务器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.coloradmin.cn/o/1927753.html

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

相关文章

【Linux】安装PHP扩展-igbinary

说明 本文档是在centos7.6的环境下,安装PHP7.4之后,安装对应的PHP扩展igbinary。 一、igbinary简述 igbinary 是一个 PHP 扩展,主要用于序列化和反序列化数据,其设计目的是为了提高序列化过程中的性能和内存效率。 优点&#…

wifi信号处理的CRC8、CRC32

🧑🏻个人简介:具有3年工作经验,擅长通信算法的MATLAB仿真和FPGA实现。代码事宜,私信博主,程序定制、设计指导。 🚀wifi信号处理的CRC8、CRC32 目录 🚀1.CRC概述 🚀1.C…

LeNet入门和Pytorch实现

1. LeNet简介 LeNet是一系列网络的合称,包括LeNet1-LeNet5,是卷积神经网络的开山之作。 文献:LeCun Y, Boser B, Denker J, et al. Handwritten digit recognition with a back-propagation network[J]. Advances in neural information pro…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【查询密钥是否存在(C/C++)】

查询密钥是否存在(C/C) HUKS提供了接口供应用查询指定密钥是否存在。 在CMake脚本中链接相关动态库 target_link_libraries(entry PUBLIC libhuks_ndk.z.so)开发步骤 构造对应参数。 指定密钥别名keyAlias,密钥别名最大长度为64字节。查询密钥需要的属性TAG&#…

DZS-12CE/S延时中间继电器 导轨安装 约瑟JOSEF

中间继电器型号: DZS-254 DZS-145 DZS-233 DZS-121 DZS-112 DZS-121 DZS-12BG DZS-12B DZS-213 DZS-234 DZS-11B/Q DZS-226 DZS-652 DZS-17E/302 DZS-12CE/S DZS-821 DZS-226 DZS-249 DZS-254G DZS-12E DZS-895 DZS-234 DZS-655G DZS-651 DZS-115 DZS-…

使用自制Qt工具配合mitmproxy进行网络调试

在软件开发和网络调试过程中,抓包工具是不可或缺的。传统的抓包工具如Fiddler或Charles Proxy通常需要设置系统代理,这会抓到其他应用程序的网络连接,需要设置繁琐的过滤,导致不必要的干扰。为了解决这个问题,我们可以…

一个引发openssl崩溃问题案例

1 背景 最近用libevent写了一个https代理功能,在调研的时候,遇到了一个项目用到了本地多个openssl库引发的ssl握手崩溃问题。 2 开发环境 项目库版本号依赖项libeventlibevent-2.1.8-stableopenssl 1.1openssl1.0u / 1.1.1w / 3.3.1...... 3 问题现象…

FlinkErr:org/apache/hadoop/hive/ql/parse/SemanticException

在flink项目中跑 上面这段代码出现如下这个异常&#xff0c; java.lang.NoClassDefFoundError: org/apache/thrift/TException 加上下面这个依赖后不报错 <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId…

springmvc1

以前的servlet程序&#xff1a; springmvc 不同的处理器&#xff1a;不同的方法或者处理类 所有的请求都会经过dispathcherservlet的doservice方法&#xff1a; mvc原理&#xff1a; 前端控制器&#xff1a;jsp或者什么东西

axios以post方式提交表单形式数据

某些后端框架请求接口必须走form表单提交的那种形式&#xff0c;但前端很少有<form action"接口地址" method"post"></form>这种写法去提交表单数据&#xff0c;所以前端需要用axios模拟一个表单提交接口。 Content-Type 代表发送端&#xff0…

【Unity学习笔记】第二十 · 物理引擎脉络梳理(数值积分、碰撞检测、约束解决)

转载请注明出处: https://blog.csdn.net/weixin_44013533/article/details/139808452 作者&#xff1a;CSDN|Ringleader| 物理引擎综述 物理引擎是利用物理规则模拟物体运动和碰撞的模块&#xff0c;以在重力、弹力、摩擦力等各种力作用下做出真实运动表现&#xff0c;并对碰…

实现将Nginx的每个网站配置单独的nginx配置文件——每个网站单独管理

一、问题描述 Nginx默认地配置文件【nginx.conf】是包含了所有网站的配置内容,如果我们需要配置很多网站的话,就需要在默认的配置文件中给每个网站都添加一条server记录,这样下去nginx默认配置文件会变得很大,很难管理(比如有些网站不使用了,需要注销掉,也需要到该文件操…

YOLOv8白皮书-第Y7周:训练自己的数据集

本文为365天深度学习训练营中的学习记录博客 原作者&#xff1a;K同学啊|接辅导、项目定制 本文可以参考《YOLOv5白皮书-第Y2周:训练自己的数据集》 这次试着用YOLOv8训练自己的数据。 一、配置环境 1、官网下载源码 官网地址:【YOLOv8开源地址】 2、安装需要的环境 配置P…

快捷工具(提升工作效率)

文章目录 一、notepad++设置转json1.下载插件二、截图工具(可以将截图并粘贴到窗口)1.下载安装软件:snipaste三、idea 日志控制台查找日志1.idea 安装插件:Grep console四、beyond compare 4项目工程比较工具1.浏览器下载安装。本地运行五、xampp快速部署本地mysql,tomacat1.浏…

物体检测单阶段SSD

Faster RCNN 数据增广&#xff1a;

外包干了1个月,技术明显退步。。。

有一种打工人的羡慕&#xff0c;叫做“大厂”。 真是年少不知大厂香&#xff0c;错把青春插稻秧。 但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂…

Redislnsight-v2远程连接redis

redis安装内容添加&#xff1a; Linux 下使用Docker安装redis-CSDN博客 点击添加 添加ip地址&#xff0c;密码&#xff0c;端口号 创建完成 点击查看内容&#xff1a;

python初学者知识点笔记更新

文章目录 1.main函数入口2.__init__.py 文件作用3.from .applications import server解释4.变量没有修饰&#xff0c;直接创建使用1. 内置数据类型和函数2. 类和对象3.总结 5.mod app.__module__6.集合对比区分集合类型&#xff1a;混合集合类型 7.安装包失败 1.main函数入口 …

利用react和chainlit开发大模型结果人工评测平台

项目背景 利用LLM的prompt做了个简单的服务推荐助手&#xff0c;依据用户的提问找出合适的服务项目推荐给的用户。为了测评prompt的效果&#xff0c;使用reactchainlit开发了一个简单的效果测评平台。在该平台上&#xff0c;可以模拟用户向LLM发出问题&#xff0c;并对大模型返…

阿里通义音频生成大模型 FunAudioLLM 开源

简介 近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术的进步极大地改变了人类与机器的互动方式&#xff0c;特别是在语音处理领域。阿里巴巴通义实验室最近开源了一个名为FunAudioLLM的语音大模型项目&#xff0c;旨在促进人类与大型语言模型&#xff08;LLMs&…