Nginx的正向代理与反向代理


你好呀,我是赵兴晨,文科程序员。

今天,我们将一起了解什么是Nginx的正向代理?什么是Nginx的反向代理?并实际动手实践。

以下内容都是满满的干货,绝对不容错过。我建议先收藏这篇文章,然后找一个安静的角落,慢慢品味和实践。

正向代理:连接互联网的桥梁

在局域网环境中,当需要访问外部互联网资源时,正向代理扮演着至关重要的角色。它像一座桥梁,连接着局域网内的客户端和广阔的互联网世界。

正向代理

正向代理(Forward Proxy)是一种代理服务器,它位于客户端和目标服务器之间。客户端通过代理服务器访问互联网,而不是直接连接到目标服务器。

让我们通过一个实际的例子来理解正向代理的作用

假设你在一个公司的局域网中工作,而公司内只有一台电脑可以访问外部网站。如果每个人都需要上网查找资料,显然不可能让所有人都排队使用这台电脑。这时,将这台电脑设置为代理服务器就是一个明智的选择。其他电脑通过这台代理服务器访问互联网,从而解决了访问限制的问题。

配置与优势

要实现正向代理,需要在代理服务器上进行相应的配置,包括设置监听端口、定义可访问的客户端等。配置完成后,所有局域网内的客户端都可以通过代理服务器安全、高效地访问互联网资源。

使用正向代理的好处包括

• 访问控制:管理员可以控制哪些用户或设备可以访问互联网,以及可以访问哪些网站。
• 缓存和加速:代理服务器可以缓存频繁访问的网页,减少重复的网络请求,提高访问速度。
• 隐私保护:客户端的真实IP地址被隐藏,增加了一定的匿名性。

反向代理:互联网的隐形守护者

在网络架构中,反向代理(Reverse Proxy)扮演着一个关键角色,它为客户端提供了一种无需直接与目标服务器交互的方式来访问资源。客户端对代理的存在毫无感知,这大大简化了访问过程。

反向代理

客户端通过反向代理服务器发送请求,而无需知晓目标服务器的具体位置或配置。反向代理服务器接收请求后,会选择一个合适的目标服务器来获取数据,然后将这些数据返回给客户端。在这个过程中,反向代理服务器对外表现为一个单一的服务器,隐藏了后端服务器的IP地址。

让我们通过一个实际的例子来理解反向代理的作用

想象一下,客户端想要访问一台运行在8001端口的Tomcat服务器。然而,客户端并不需要知道这个真实的端口号。Tomcat服务器为客户端提供了一个9001端口,客户端只需直接访问这个端口即可。至于9001端口如何转发请求到Tomcat服务器的8001端口,这是反向代理服务器的内部工作,客户端无需关心,也无需进行任何额外的配置。

反向代理的优势

使用反向代理的好处是显而易见的

• 简化客户端配置:客户端无需进行复杂的配置,即可直接访问服务。
• 提高安全性:隐藏了后端服务器的真实IP地址,增加了网络的安全性。
• 负载均衡:反向代理可以智能地将请求分发到多个后端服务器,实现负载均衡,提高系统的可用性和可靠性。
• 缓存静态内容:反向代理还可以缓存静态内容,减少对后端服务器的请求,提高访问速度。

正向代理和反向代理区别

正向代理服务器,架设在客户机与目标主机之间,只用于代理内部网络对互联网的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。

正向代理是客户端知道目标服务器在哪里,然后通过代理服务器去访问不能直接访问的目标服务器,而目标服务器并不知道客户端通过什么来访问的,即正向代理代理的是客户端。

反向代理服务器,架设在服务端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给互联网上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

反向代理中,外部网络对于内部网络具体的情况是不可见的,而代理服务器来代理内部网络来返回所要的数据,而服务端知道请求的来源以及数据。反向代理代理的是服务端。

正向代理和反向代理用途

正向代理

• 为在防火墙内的局域网客户端提供访问互联网的途径
• 可以做缓存,加速访问资源
• 对客户端访问授权,上网进行认证
• 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

反向代理

• 保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击大型网站,通常将反向代理作为公网访问地址,Web服务器是内网
• 负载均衡,通过反向代理服务器来优化网站的负载,反向代理服务器根据每个服务器的性能来分配请求,保证服务器负载能在有效范围内

Nginx 实现正向代理:配置与实践

在日常工作和网络配置中,我们通常更多地接触到 Nginx 的反向代理功能。然而,Nginx 同样可以作为正向代理使用,以便在客户端和目标服务器之间进行请求的转发。接下来,我将为你详细介绍 Nginx 正向代理的配置步骤。

正向代理的基本概念

正向代理作为客户端与互联网之间的中介,允许客户端通过代理服务器访问外部资源。客户端需要配置代理服务器的相关设置,以便通过代理进行网络访问。

Nginx 正向代理配置

为了实现 Nginx 的正向代理功能,除了配置转发 HTTP 80 端口的请求外,还需要配置 HTTPS 443 端口的转发。然而,Nginx 官方版本并不直接支持 HTTPS 请求的转发。

ngx_http_proxy_connect_module 模块

幸运的是,阿里云的一位技术专家开发了一个名为 ngx_http_proxy_connect_module 的 Nginx 模块,专门用于处理 HTTPS 请求的转发,并且已经开源。你可以在 https://github.com/chobits/ngx_http_proxy_connect_module 上找到这个模块。

1、安装Nginx1.20.1

以下步骤仅用于实验正向代理

实验环境 centos7.9 root用户操作

# 安装依赖
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安装完毕,下面开始配置Nginx的正向代理。

2、修改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

3、验证正向代理

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 谷歌浏览器 验证
在这里插入图片描述
在这里插入图片描述

windows按照上图配置完 就可以直接访问 www.baidu.com查资料了,如果无法访问,请检查nginx服务器,防火墙和selinux是否关闭。

好了以上就是今日的分享,回顾一下,今天收获了啥?

• Nginx的正向代理,反向代理
• 正向代理优势,反向代理的优势
• 正向代理和反向代理的区别
• 正向代理和反向代理的用途
• 如何安装Nginx 以及 Nginx正向代理的实践

实践是检验真理的唯一标准。阅读这篇文章可能只是让你在理论上掌握了知识,但真正的理解来自于亲自动手实践。因此,别忘了收藏这篇文章,并且关注我以便你在未来需要时能够轻松找到这些宝贵的资源

另外,如果你觉得今天的内容对你有帮助,不妨点击在看,分享给更多的朋友。一个小小的动作,可能会给他们带来巨大的帮助。

最后,我想说的是:点赞和分享不仅仅是一种美德,更是对未来美好生活的投资。愿每一个点在看的朋友,未来都能收获满满的幸福和成功!

你好,我是赵兴晨,一名文科程序员。我期待在文章下方看到你的留言,让我们一起交流,共同进步。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端CSS3基础1(新增长度单位,盒子模型,背景,边框,文本属性,渐变,字体,2D变换,3D变换)

前端CSS3基础1&#xff08;新增长度单位&#xff0c;盒子模型&#xff0c;背景&#xff0c;边框&#xff0c;文本属性&#xff0c;渐变&#xff0c;字体&#xff0c;2D变换&#xff0c;3D变换&#xff09; CSS3 新增长度单位CSS3 新增盒子模型相关属性box-sizing怪异盒模型box-…

【计算机毕业设计】基于SSM+Vue的线上旅行信息管理系统【源码+lw+部署文档+讲解】

目录 1 绪论 1.1 研究背景 1.2 设计原则 1.3 论文组织结构 2 系统关键技术 2.1JSP技术 2.2 JAVA技术 2.3 B/S结构 2.4 MYSQL数据库 3 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 操作可行性 3.1.3 经济可行性 3.1.4 法律可行性 3.2系统功能分析 3.2.1管理员功能分析 3.2.…

HTML常用标签-表单标签

表单标签 1 表单标签2 表单项标签2.1 单行文本框2.2 密码框2.3 单选框2.4 复选框2.5 下拉框2.6 按钮2.7 隐藏域2.8 多行文本框2.9 文件标签 1 表单标签 表单标签,可以实现让用户在界面上输入各种信息并提交的一种标签. 是向服务端发送数据主要的方式之一 form标签,表单标签,其内…

景源畅信:抖音小店比较冷门的品类分享?

在抖音小店的世界里&#xff0c;热门品类总是吸引着众多商家和消费者的目光。然而&#xff0c;就像星空中的繁星&#xff0c;虽不那么耀眼却依然存在的冷门品类同样值得我们关注。它们或许不似服装、美妆那样日进斗金&#xff0c;但正是这些小众市场的存在&#xff0c;为平台带…

搜索引擎的设计与实现(三)

目录 5 系统详细实现 5.1实现环境配置 5.2功能实现 5.2.1 建立索引 5.2.2 文件搜索实现 5.2.3 数据库的连接配置 5.2.4 数据库搜索实现 5.2.5 后台数据编辑实现 前面内容请移步 搜索引擎的设计与实现&#xff08;二&#xff09; 免费源代码&毕业设计论文 搜索…

ARM基于DWT实现硬件延时(GD32)

软件延时的缺点 软件延时的精度差&#xff0c;受系统主频影响&#xff0c;调教困难 硬件延时 DWT数据跟踪监视点单元硬件延时 硬件延时实现代码 delay.c #include <stdint.h> #include "gd32f30x.h"/** *****************************************************…

搜索引擎的设计与实现(四)

目录 6 系统测试 6.1测试重要性 6.2测试用例 结 论 参 考 文 献 前面内容请移步 搜索引擎的设计与实现&#xff08;三&#xff09; 免费源代码&毕业设计论文 搜索引擎的设计与实现 6 系统测试 6.1测试重要性 该项目是在本地服务器上进行运行和调试&#xff0c;…

BOM部分

一&#xff0c;概述 二&#xff0c;Windows对象常见的事件 1.窗口加载事件 上面那个是会等页面都加载完了&#xff0c;在进行函数的调用或者触发事件&#xff0c;如&#xff08;图像&#xff0c;文本&#xff0c;css&#xff0c;js等&#xff09;&#xff0c;所以那个声明可以…

Llama 3 超级课堂 -笔记

课程文档&#xff1a; https://github.com/SmartFlowAI/Llama3-Tutorial 课程视频&#xff1a;https://space.bilibili.com/3546636263360696/channel/series 1 环境配置 1.1 创建虚拟环境,名为&#xff1a;llama3 conda create -n llama3 python3.10 1.2 下载、安装 pyt…

ASP.NET邮件收发程序的设计与开发

摘 要 《邮件收发程序的设计与开发》是一个综合性的程序设计&#xff0c;涉及到界面、系统、数据库、协议、编码等多个方面的内容。本设计前台采用.NET技术,后台数据库采用SQL Server 2000&#xff0c;语言采用C#&#xff0c;主要讲述了邮件系统的注册、登陆、管理、发送和…

C. Sort Zero

题目描述 思路分析: 记住他是要保证这个数列是不降的,也就是说如果某一个位置上的数变成了0,那么这个数前面的部分一定全都是0了,我们用map数组得到每一个数出现的最晚的位置,先从后向前遍历一遍,找出从哪开始出现了递减,然后标记下来结束即可,看看前面的每一个数都要用st标记是…

[笔试训练](二十二)064:添加字符065:数组变换066:装箱问题

目录 064:添加字符 065:数组变换 066:装箱问题 064:添加字符 添加字符_牛客笔试题_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 枚举所有A&#xff0c;B字符串可能的对应位置&#xff0c;得出对应位置不同字符数量的最小情况 两字符串的字符数量差n-m&…

【C++】string|迭代器iterator|getline|find

目录 ​编辑 string 1.string与char* 的区别 2.string的使用 字符串遍历 利用迭代器遍历 范围for遍历 反向迭代器 字符串capacity 字符串插入操作 push_back函数 append函数 运算符 ​编辑 insert函数 substr函数 字符串查找函数 find函数 rfind函数 …

Diffusion Inversion技术

Diffusion Inversion技术 在图像生成/编辑领域中&#xff0c;Inversion 技术是指将一张&#xff08;真实&#xff09;图片转换为生成模型对应的 latent&#xff0c;要求将这个 latent 输入到生成模型中之后&#xff0c;能够重构出原始图片。这项技术是进行图像编辑的重要基础。…

四川汇聚荣:拼多多开店流程分享

随着电商行业的蓬勃发展&#xff0c;越来趀多的创业者选择在线上平台开设店铺。其中&#xff0c;拼多多以其独特的团购模式和巨大的用户基数成为众多商家的新宠。但对于初次涉足的商家而言&#xff0c;如何正确高效地开设一家拼多多店铺&#xff0c;无疑是他们迫切需要解决的难…

Windows安装Linux子系统

WSL 是 Windows Subsystem for Linux 的简称&#xff0c;意思是 linux 版的 window 子系统。适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。 Linux 分发版可以在…

下单制造fpc的工艺参数

FPC工艺简介 - 百度文库 (baidu.com) FPC工艺参数 - 豆丁网 (docin.com) FPC柔性线路板的主要参数.ppt (book118.com) 捷多邦&#xff1a; 华秋&#xff1a; 背胶&#xff1a; FPC板背胶是可以粘接在光滑表面的一种薄型胶带&#xff0c;可以在狭小以及光滑的表面上用来提供高…

[MRCTF2020]PixelShooter

是个安卓游戏题 re手肯定不会去玩游戏&#xff0c;先jadx分析一波 没有什么关键信息&#xff0c;但找到了一个unity类&#xff0c;想到apk也可以解压缩得到 .so 或者 Assembly-CSharp.dll 故又在dnspy分析一下 看了半天没有和flag有关信息&#xff0c;看wp&#xff1a; Asse…

深入理解K8S【安全认证机制kubectlconfig】

深入理解K8S【安全认证机制】 1 核心概念 1.1 安全体系 对于大型系统来说&#xff0c;对业务的权限、网络的安全认证是必不可少的。 对于linux系统来说&#xff0c;用户和组、文件权限、SELinux、防火墙、pam、sudo等&#xff0c;究其核心的目的都是为了保证系统是安全的。 …

Charger之三动态电源路径管理(DPPM)

-----本文简介----- 主要内容包括&#xff1a; 领资料&#xff1a;点下方↓名片关注回复&#xff1a;粉丝群 硬件之路学习笔记公众号 Charger的动态电源路径管理&#xff08;DPPM&#xff09; 前篇内容&#xff1a;①电池管理IC&#xff08;Charger&#xff09;了解一下&…