构建高效网络:深入理解正向与反向代理的作用与配置

news2024/11/30 0:42:53

正向代理

如果把局域网外的互联网环境想象成一个巨大的资源库,则局域网中的客户端要访问互联网则需要通过代理服务器来访问,这种代理成为正向代理。

示例
用户想要访问 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.zip

tar -zxvf nginx-1.20.1.tar.gz

unzip v0.0.2.zip

mv 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_module

make && make install



# 设置开机自启

vi /etc/systemd/system/nginx.service



# 编辑内容如下

[Unit]

Description=nginx

After=network.target

  

[Service]

Type=forking

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s quit

PrivateTmp=true

  

[Install]

WantedBy=multi-user.target



# 设置开机自启并启动

systemctl enable nginx --now

修改nginx配置

#正向代理转发http请求

server {

    #指定DNS服务器IP地址 

    resolver 114.114.114.114;

    #监听80端口,http默认端口80

    listen 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默认端口443

    listen 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 -t

systemctl 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:80

curl https://www.baidu.com/ -v -x 127.0.0.1:443



windows10 谷歌浏览器 验证


设置完 直接访问 www.baidu.com即可,如果无法访问 检查nginx服务器 防火墙和selinux是否关闭

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

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

相关文章

vivado 在硬件中调试逻辑设计

在硬件中调试逻辑设计 设计中包含调试核后 &#xff0c; 您可使用运行时间逻辑分析器功能来对硬件中的设计进行调试。 使用 Vivado Logic Analyzer 进行设计调试 Vivado Logic Analyzer 功能可用于与设计中运行的新 ILA 、 VIO 和 JTAG-to-AXI Master 调试核进行交互。…

02 Windows操作系统密钥激活流程

Windows系统的激活流程通常包括以下步骤&#xff1a; AI步骤 1. 购买正版产品密钥&#xff1a;在正式激活Windows系统之前&#xff0c;你需要购买一个合法的产品密钥。你可以通过Microsoft官方网站或授权的零售商购买密钥。 2. 输入产品密钥&#xff1a;在购买后&#xff0c;你…

1.8V LDO电路 ➕1.2V bandgap电路

1.8V LDO电路 ➕1.2V bandgap电路&#xff08;WX:didadidadidida313&#xff0c;加我备注&#xff1a;CSDN LDO&#xff0c;谢绝白嫖哈&#xff09; 1.8V LDO电路 ➕1.2V bandgap电路,基于tsmc180nm工艺库 带设计仿真报告&#xff0c;非常适合新手入门&#xff01; 本文采用…

【智能算法应用】灰狼算法求解TSP问题

目录 1.算法原理2.TSP数学模型3.结果展示4.参考文献 1.算法原理 【智能算法】灰狼算法&#xff08;GWO&#xff09;原理及实现 2.TSP数学模型 旅行商问题&#xff08;TSP&#xff09;是一种著名的组合优化问题&#xff0c;它涉及寻找给定一组城市及其之间的距离或成本&#…

室内定位中文综述阅读

1 室内高精度定位技术总结与展望 [4]柳景斌,赵智博,胡宁松等.室内高精度定位技术总结与展望[J].武汉大学学报(信息科学 版),2022,47(07):997-1008.DOI:10.13203/j.whugis20220029. 1.1.1 WiFi‐RTT定位 2016 年 12 月&#xff0c;随着新版 IEEE802.11 标准的公布&#xff0c…

逆向案例二十一——遇到混淆怎么办

开始新的板块尝试&#xff0c;混淆了怎么办 网址&#xff1a;极简壁纸_海量电脑桌面壁纸美图_4K超高清_最潮壁纸网站 抓包抓到&#xff0c;好久没做解密了&#xff0c;奥里给干他&#xff01;&#xff1a; 搜索关键字&#xff0c;打上断点&#xff0c;点击第二页。 _0x10a345…

中国企业级存储市场:五年来首次负增长,第二曲线在哪里?

出人意料&#xff0c;中国企业级存储市场出现过去五年来的首次负增长。 IDC最新《中国企业级存储市场跟踪报告,2023》显示&#xff0c;2023年中国企业级存储市场规模达到66亿美元&#xff0c;同比下降0.6%。外部环境的动荡与不确定性的陡增&#xff0c;让中国不少行业用户受到…

深度学习每周学习总结P4(猴痘识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 –来自百度网盘超级会员V5的分享 目录 0. 总结1. 数据导入部分2. 划分数据集3. 模型构建部分3.1 模型构建3.2 公式推导 4. 设置超参数5. …

关于AI Agent、RAG技术揭秘:如何让人工智能更懂你?

人工智能技术正以前所未有的速度改变着我们的世界。从深度学习算法的突破到自动化和机器学习技术的进步。在这个变革的时代&#xff0c;几种前沿技术尤其引人注目&#xff0c;其中包括RAG&#xff08;Retrieval-Augmented Generation&#xff09;、AI Agent以及多模态技术。 近…

python之文件操作与管理

1、文件操作 通过open&#xff08;&#xff09;操作&#xff0c;来创建文件对象&#xff0c;下面是open&#xff08;&#xff09;函数语法如下&#xff1a; open&#xff08;file,mode r,buffering -1 , encoding None ,errors None , newline None,closefd True,opener …

2024年Flink CDC 实时同步数据(MySQL到MySQL)

#准备工作# 看到一下图片说明执行成功&#xff01;&#xff01;&#xff01; 异常处理及分析&#xff1a; Could not execute SQL statement. Reason: org.apache.flink.sql.parser.impl.ParseException: Encountered "\connector\" at line 21, column 3. Was expec…

记录一次浅拷贝导致的缺陷

背景&#xff1a;假期表查询&#xff0c;表中存放的工作日信息是按照月份维度的&#xff0c;例如1月的假期表信息是NNNYYYYYNN.....一共31天&#xff0c;如果是工作日那么就是Y&#xff0c;如果非工作日那就是N。获取指定日期的下一个工作日&#xff0c;就会先查出这个月份的这…

Qt学习记录(C++)——Day 2

目录 一、作业 要求&#xff1a; 实现&#xff1a; 1.创建新的窗口类 2. 主窗口中实现 二、 窗口菜单设计 效果展示图 三、图片资源的导入 步骤&#xff1a; 举例&#xff1a; 四、 对话框 1.模拟对话框 2. 非模态对话框 3.错误对话框 4.信息对话框 5.提问对话…

边缘计算采集网关如何助力制造企业解决数采问题-天拓四方

一、企业背景 某大型制造企业&#xff0c;位于国内某经济发达的工业园区内&#xff0c;拥有多个生产线和智能化设备&#xff0c;致力于提高生产效率、降低运营成本。随着企业规模的扩大和生产自动化的推进&#xff0c;该企业面临着海量数据处理、实时响应和网络安全等多重挑战…

Linux下网络编程基础知识--协议

网络基础 这一个课程的笔记 相关文章 协议 Socket编程 高并发服务器实现 线程池 协议 一组规则, 数据传输和数据的解释的规则。 比如说依次发送文件的文件名, 文件的大小, 以及实际的文件, 这样规定发送一个文件的顺序以及发送的每一个部分的格式等可以算是一种协议 型协议 …

(学习日记)2024.04.12:UCOSIII第四十节:软件定时器函数接口讲解

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

CUDA 12.4文档1:使用GPU好处CUDA可扩展编程模型

本博客参考官方文档进行介绍&#xff0c;全网仅此一家进行中文翻译&#xff0c;走过路过不要错过。 官方网址&#xff1a;https://docs.nvidia.com/cuda/cuda-c-programming-guide/ 本文档分成多个博客进行介绍&#xff0c;在本人专栏中含有所有内容&#xff1a; https://bl…

Linux网卡:连接虚拟与现实的桥梁

在介绍Linux网卡之前&#xff0c;让我们先迈入时光机&#x1f570;️&#xff0c;回到1980年代末期&#xff0c;互联网正在逐步从一个科研网络向公众网络转变&#xff0c;Linux——一个自由和开源的操作系统诞生了&#x1f427;。Linux的出现&#xff0c;对于计算机科学领域来说…

【微命令】git 如何修改某个分支的名字(git branch -m newbranch)

简要信息&#xff0c;快速记录 命令 # 切换到某个需要修改的分支 git checkout oldbranch# 修改分支名字 git branch -m newbranch假设作为git设计者&#xff0c;要用来修改branch的命令&#xff0c;那么就是 git branch作为前缀&#xff0c;然后进一步修改的命令是branch相关…

CorelDRAW21.2.4中文最新官方和谐版下载

CorelDRAW是一款由加拿大Corel公司出品的平面设计软件&#xff0c;也被称为CDR。它是一款功能强大的矢量图形制作和排版软件&#xff0c;主要面向绘图设计师和印刷输出人员。该软件提供了矢量插图、页面布局、图片编辑和设计工具&#xff0c;广泛应用于排版印刷、矢量图形编辑及…