构建高效网络:深入理解正向与反向代理的作用与配置
正向代理
如果把局域网外的互联网环境想象成一个巨大的资源库,则局域网中的客户端要访问互联网则需要通过代理服务器来访问,这种代理成为正向代理。
示例:
用户想要访问 https://chensir.ink (目标服务器),但是用户端(浏览器)无法直接访问到,这时客户端需要提前配置好一个代理服务器,代理服务器可以访问 https://chensir.ink ,之后用户再通过代理服务器来访问目标服务器即可。
正向代理:无法直接连接到目标服务器,需要一个代理服务器帮忙实现,但要提前配置上代理服务器相关配置。
正向代理缺点:使用麻烦,用户需要提前自己配置好代理服务器所需要的各种配置参数和环境。
反向代理
客户端对代理是无感知的,因为客户端不需要配置任何参数就可以访问,客户端只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了正式服务器IP地址。
示例:
客户端想要访问Tomcat服务器,Tomcat服务器真实的端口是8001,但客户端并不知道,Tomcat只为客户端提供了一个9001端口,所以客户端认为9001就是Tomcat端口,直接访问9001这个端口即可,至于9001端口怎样转到Tomcat真实端口8001是服务器内部工作分配的,客户端不需要知道,也不需要配置环境参数
反向代理:客户端想访问目标服务器,服务器直接提供了一个网址,直接访问即可,不用管其他配置
反向代理优点:方便快捷,用户无需配置,直接访问服务器一步到位
正向代理和反向代理区别
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对互联网的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
正向代理是客户端知道目标服务器在哪里,然后通过代理服务器去访问不能直接访问的目标服务器,而目标服务器并不知道客户端通过什么来访问的,即正向代理代理的是客户端。
反向代理服务器架设在服务端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给互联网上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
反向代理中,外部网络对于内部网络具体的情况是不可见的,而代理服务器来代理内部网络来返回所要的数据,而服务端知道请求的来源以及数据。反向代理代理的是服务端。
正向代理和反向代理用途
正向代理
- 为在防火墙内的局域网客户端提供访问互联网的途径
- 可以做缓存,加速访问资源
- 对客户端访问授权,上网进行认证
- 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理
- 保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击大型网站,通常将反向代理作为公网访问地址,Web服务器是内网
- 负载均衡,通过反向代理服务器来优化网站的负载,反向代理服务器根据每个服务器的性能来分配请求,保证服务器负载能在有效范围内
Nginx实现正向代理
nginx正向代理转发请求。除了要配置转发http 80端口还需要配置https 443端口,nginx官方并不支持直接转发https请求,但是阿里的一个大佬对nginx拓展了一个ngx_http_proxy_connect_module模块,并且开源 https://github.com/chobits/ngx_http_proxy_connect_module 不过维护的模块补丁也是有nginx版本限制的具体的到Git查看即可。
安装nginx 1.20.1
仅用于实验正向代理
# 安装依赖yum install -y wget unzip patch gcc pcre-devel zlib zlib-devel openssl openssl-devel curl# 下载nginx1.20.1源码包wget https://nginx.org/download/nginx-1.20.1.tar.gz# 下载ngx_http_proxy_connect_module模块wget https://github.com/chobits/ngx_http_proxy_connect_module/archive/refs/tags/v0.0.2.zip# 解压 nginx-1.20.1.tar.gz v0.0.2.ziptar -zxvf nginx-1.20.1.tar.gzunzip v0.0.2.zipmv ngx_http_proxy_connect_module-0.0.2/ ngx_http_proxy_connect_module# 安装cd nginx-1.20.1# 打补丁patch -p1 < /root/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_1018.patch# 添加模块并安装./configure --add-module=/root/ngx_http_proxy_connect_modulemake && make install# 设置开机自启vi /etc/systemd/system/nginx.service# 编辑内容如下[Unit]Description=nginxAfter=network.target[Service]Type=forkingExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=true[Install]WantedBy=multi-user.target# 设置开机自启并启动systemctl enable nginx --now
修改nginx配置
#正向代理转发http请求server {#指定DNS服务器IP地址 resolver 114.114.114.114;#监听80端口,http默认端口80listen 80;#服务器IP或域名server_name localhost;#正向代理转发http请求location / {proxy_pass http://$host$request_uri;proxy_set_header HOST $host;proxy_buffers 256 4k;proxy_max_temp_file_size 0k;proxy_connect_timeout 30;proxy_send_timeout 60;proxy_read_timeout 60;proxy_next_upstream error timeout invalid_header http_502;}}#正向代理转发https请求server {#指定DNS服务器IP地址 resolver 114.114.114.114;#监听443端口,https默认端口443listen 443;#正向代理转发https请求proxy_connect;proxy_connect_allow 443 563;proxy_connect_connect_timeout 10s;proxy_connect_read_timeout 10s;proxy_connect_send_timeout 10s;location / {proxy_pass http://$host;proxy_set_header Host $host;}}
nginx配置语法检测并加载配置文件
/usr/local/nginx/sbin/nginx -tsystemctl reload nginx
DNS:
- (国外)谷歌:8.8.8.8 developers.google.com
- (国外)OpenDNS:208.67.222.222 signup.opendns.com
- (国内)114:114.114.114.114 www.114dns.com
- (国内)腾讯:119.29.29.29 www.dnspod.cn
- (国内)阿里:223.5.5.5 alidns.com
- (国内)百度:180.76.76.76 dudns.baidu.com
验证正向代理
Linux下验证代理服务器是否能正常转发http和https请求
curl http://www.baidu.com/ -v -x 127.0.0.1:80curl https://www.baidu.com/ -v -x 127.0.0.1:443


windows10 谷歌浏览器 验证


设置完 直接访问 www.baidu.com即可,如果无法访问 检查nginx服务器 防火墙和selinux是否关闭
相关文章:
构建高效网络:深入理解正向与反向代理的作用与配置
正向代理 如果把局域网外的互联网环境想象成一个巨大的资源库,则局域网中的客户端要访问互联网则需要通过代理服务器来访问,这种代理成为正向代理。 示例: 用户想要访问 https://chensir.ink (目标服务器)࿰…...
Linux:make/makefile的使用
一、什么是makefile/make 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的 规则来指定,哪些文件需要先编译&am…...
Java设计模式—策略模式(商场打折)
策略这个词应该怎么理解,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是一个策略。 再比如我们去逛商场,商场现在正在搞活动&…...
FOR循环
oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 前面两种循环都要根据条件是否成立而确定循环体的执行,具体循环体执行多少次事先并不知道。 FOR 循环可以控制循环执行的次数,由循环变量控制循环体的…...
C++: 命名空间/C++输入输出/缺省参数/函数重载/引用/内联函数
进入C以后,就翻开了新的篇章。C支持C语言的使用。事实上,C是创建者在发现C语言中有很多不好用的地方(在后续学习中会明显看到)后,在C语言基础上又加入了许多语法,于是就成了C。 1.命名空间 来源ÿ…...
Java | Leetcode Java题解之第13题罗马数字转整数
题目: 题解: class Solution {Map<Character, Integer> symbolValues new HashMap<Character, Integer>() {{put(I, 1);put(V, 5);put(X, 10);put(L, 50);put(C, 100);put(D, 500);put(M, 1000);}};public int romanToInt(String s) {int …...
题目:学习使用register定义变量的方法。
题目:学习使用register定义变量的方法。 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated …...
IO_DAY7
1:实现2个终端之间的互相聊天 要求:千万不要做出来2个终端之间的消息发送是读一写的,一定要能够做到,一个终端发送n条消息,另一个终端一条消息都不回复都是没有问题的 终端A: #include<myhead.h> int main(int argc, char…...
大模型学习笔记八:手撕AutoGPT
文章目录 一、功能需求二、演示用例三、核心模块流程图四、代码分析1)Agent类目录创建智能体对象2)开始主流程3)在prompt的main目录输入主prompt和最后prompt4)增加实际的工具集tools(也就是函数)5…...
Java常用API_System——常用方法及代码演示
1.System.exit(int status) 方法的形参int status为状态码,如果是0,说明虚拟机正常停止,如果非0,说明虚拟机非正常停止。需要将程序结束时可以调用这个方法 代码演示: public class Test {public static void main(S…...
neo4j图数据库下载安装配置
neo4j下载地址Index of /doc/neo4j/3.5.8/ 1.说明:jdk 1.8 版本对应的 neo4j 数据库版本 推荐安装3.X版本 2.配置系统环境变量 3.启动 neo4j.bat console 4.访问...
结构化面试-有矛盾的人际沟通题
例题一: 你和小张一起值班,但是小张没来,刚好领导检查发现后批评了他,事后小张埋怨你, 认为你在领导面前表现,并在同事中传播,同事也觉得你不通人情,你怎么处理? 回答&a…...
AI技术创业机会之金融科技
金融科技服务(FinTech)领域正经历着一场由人工智能(AI)技术引领的深刻变革,为创业者提供了无数创新与颠覆传统金融服务模式的机会。以下详述了金融科技服务中AI技术的具体创业机会及其细节与内容,以期为有志于涉足此领域的创业者提供全面的洞察与参考。 一、智能投顾与财…...
LC低通滤波
LC滤波器,是指将电感L与电容器 C进行组合设计构成的滤波电路,可去除或通过特定频率的无源器件。电容器具有隔直流通交流,且交流频率越高越容易通过的特性。而电感则具有隔交流通直流,且交流频率越高越不易通过的特性。因此&#x…...
CS162 Operating System笔记
What is an Operating System? it’s typically a special layer of software that provides the application access to hardware resources.So.it’s convenient abs fractions of complex hardware devices....
mysql慢sql排查与分析
当MySQL遇到慢查询(慢SQL)时,我们可以通过以下步骤进行排查和优化: 标题开启慢查询日志: 确保MySQL的慢查询日志已经开启。通过查看slow_query_log和slow_query_log_file变量来确认。 如果没有开启,可以…...
基于Springboot+Vue实现前后端分离酒店管理系统
一、🚀选题背景介绍 📚推荐理由: 近几年来,随着各行各业计算机智能化管理的转型,以及人们经济实力的提升,人们对于酒店住宿的需求不断的提升,用户的增多导致酒店管理信息的不断增多,…...
2024泰迪杯c题详细思路代码讲解:竞赛论文的辅助自动评阅
C:竞赛论文的辅助自动评阅 步骤一:理解拆解题目,并对附件1中的论文集进行初步分析。 步骤二:特征构造 论文完整性:开发算法以检查论文是否全面回答了赛题。这包括自然语言处理(NLP)技术来识别关键段落和论证的完整…...
【GEE实践应用】GEE下载遥感数据以及下载后在ArcGIS中的常见显示问题处理(以下载哨兵2号数据为例)
本期内容我们使用GEE进行遥感数据的下载,使用的相关代码如下所示,其中table是我们提前导入的下载遥感数据的研究区域的矢量边界数据。 var district table;var dsize district.size(); print(dsize);var district_geometry district.geometry();Map.…...
Excel 文件底部sheet 如何恢复
偶然打开一个excel文件,惊奇地发现:原来excel文件底部的若干个sheet居然全都看不到了。好神奇啊。 用其它的电脑打开同样的excel文件,发现:其实能看到的。说明这个excel文件并没有被损坏。只要将修改相关设置。就可以再次看…...
Unity/Godot开发者看过来:手把手教你将Spine动画导出并集成到游戏引擎里(附常见报错解决)
Unity/Godot开发者实战指南:Spine动画工程化集成全流程解析 当你在Spine中完成了一个令人满意的角色动画后,接下来面临的真正挑战是如何让它活灵活现地跑在游戏引擎里。作为经历过无数次Spine动画集成的老手,我深知这个过程中可能遇到的种种…...
SAP销售订单BAPI调用避坑指南:手把手教你处理增强字段、合作伙伴与定价(附完整ABAP代码)
SAP销售订单BAPI实战:增强字段、合作伙伴与定价的深度解决方案 当你第一次调用SD_SALESDOCUMENT_CREATE创建销售订单时,可能会遇到这样的场景:订单看似创建成功,但增强字段没值、合作伙伴角色错乱、定价条件未生效。这种"表…...
短视频 SEO 关键词优化有哪些注意事项
短视频 SEO 关键词优化有哪些注意事项 在当今数字化时代,短视频平台已经成为了信息传播和内容分享的重要渠道。无论你是个人创作者还是品牌运营者,短视频的流量和曝光度都是关键。在这个竞争激烈的环境中,如何有效地进行短视频 SEO 关键词优…...
用快马平台实践vibe coding:5分钟构建你的音乐可视化应用原型
最近在探索一种叫"vibe coding"的编程方式,简单来说就是跟着感觉走,先抓住创意灵感再考虑具体实现。正好发现InsCode(快马)平台特别适合这种创作方式,今天就带大家用5分钟做个音乐可视化应用,完全不需要从零开始写代码。…...
5个React条件渲染技巧:从基础到实战的完整指南
5个React条件渲染技巧:从基础到实战的完整指南 【免费下载链接】react-fundamentals Material for my React Fundamentals Workshop 项目地址: https://gitcode.com/gh_mirrors/re/react-fundamentals React条件渲染是构建动态用户界面的核心技能,…...
Arduino红外遥控库:让硬件设备听懂遥控器的语言
Arduino红外遥控库:让硬件设备听懂遥控器的语言 【免费下载链接】Arduino-IRremote Infrared remote library for Arduino: send and receive infrared signals with multiple protocols 项目地址: https://gitcode.com/gh_mirrors/ar/Arduino-IRremote 你是…...
我用 Codex 一段时间后,才发现提示词真正该怎么写
(LetAiCode - AI 编程助手) 大家好呀,我是 Lazy熊。 最近这段时间,我越来越明显地感受到一件事。 很多人在聊 AI 编程的时候,关注点其实都差不多。看模型、看价格、看速度、看功能,或者看哪个工具最近更火。 这些当…...
从开发到SRE:PyTorch 3.0静态图生产部署必须签署的4份SLA协议,及对应可观测性埋点清单
第一章:PyTorch 3.0静态图分布式训练生产部署全景概览PyTorch 3.0 引入原生静态图编译能力(TorchDynamo Inductor 后端深度集成),结合 torch.distributed 的增强调度器与弹性容错机制,构建了面向大规模集群的端到端生…...
从零到一:在Windows 11 WSL2上本地跑通Dify AI工作流(含GPU加速配置)
从零到一:在Windows 11 WSL2上本地跑通Dify AI工作流(含GPU加速配置) 对于习惯Windows环境的开发者来说,直接在本地搭建AI开发环境往往面临两难选择:要么忍受虚拟机沉重的资源开销,要么被迫切换到Linux系统…...
ESTree节点遍历终极指南:深度优先与广度优先算法完整解析
ESTree节点遍历终极指南:深度优先与广度优先算法完整解析 【免费下载链接】estree The ESTree Spec 项目地址: https://gitcode.com/gh_mirrors/es/estree JavaScript开发者们,你们是否在构建代码分析工具时遇到过AST遍历的难题?&…...
