Nginx 代理

news2024/10/12 5:56:51

目录

正向代理

反向代理

负载均衡 

负载均衡的工作原理

优势和好处

算法和策略

应用领域

Nginx 的反向代理 

应用场景


在网络通信中,代理服务器扮演着重要的角色,其中正向代理和反向代理是两种常见的代理服务器模式。它们在网络安全、性能优化和隐私保护方面发挥着不同的作用。

正向代理

正向代理是一种代理服务器,代表客户端与目标服务器进行通信。其工作原理如下:

  1. 客户端向正向代理服务器发送请求。
  2. 正向代理服务器将请求转发给目标服务器。
  3. 目标服务器将响应发送给代理服务器。
  4. 代理服务器再将响应转发给客户端。

正向代理的主要特点包括:

  • 用于隐藏客户端的真实IP地址,提高隐私保护。
  • 可以绕过访问限制,例如访问受限制的网站。
  • 常用于企业内部网络,以控制员工对外部资源的访问。

现实生活中客户端无法直接向服务端发起请求的时候 ,我们就需要代理服务器。正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径(例如:教学环境时,同学们使用的计算机就不能访问百度,只能通过老师的计算机作为代理服务器来获取信息)。正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。代理可以实现客户端与原服务器之间的通信,Nginx也可以实现相应的代理服务。

正向代理针对的是客户端,架构如下:客户端与代理服务器属于同一个LAN,对互联网透明。


反向代理

反向代理是一种代理服务器,代表目标服务器与客户端进行通信。其工作原理如下:

  1. 客户端发送请求到反向代理服务器。
  2. 反向代理服务器根据请求将其转发到一个或多个目标服务器。
  3. 目标服务器处理请求并将响应发送给代理服务器。
  4. 代理服务器再将响应传递给客户端。

反向代理的主要特点包括:

  • 用于负载均衡,将客户端请求分发到多个目标服务器,以提高性能和可用性。
  • 提供安全性,客户端不直接与目标服务器通信,减少潜在攻击风险。
  • 常用于大型网站和应用程序,以分发流量和提供缓存服务。

反向代理Reverse Proxy方式是以代理服务器来接收internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。正向代理是针对你的客户端,而反向代理是针对服务器的。反向代理对外都是透明的,访问者者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。

【1】保证内网的安全,可以使用反向代理提供WAF(Web应用防护系统)功能,阻止web攻击大型网站,通常将反向代理作为公网访问地址,web服务器是内网。web服务器与代理服务器属于同一个LAN,对客户端透明。
 

负载均衡 

负载均衡,通过反向代理服务器来优化网站的负载 

负载均衡是一种网络和服务器管理技术,旨在分发网络流量和请求到多个服务器上,以确保高可用性、提高性能和避免单一服务器负载过重。以下是有关负载均衡的介绍:

负载均衡的工作原理

负载均衡工作原理如下:

  1. 客户端发送请求到负载均衡设备(通常是一个负载均衡器或软件)。
  2. 负载均衡设备根据特定算法(如轮询、最小连接数、最少响应时间等)选择一个后端服务器。
  3. 请求被转发到选定的服务器上。
  4. 服务器处理请求并将响应返回给负载均衡设备。
  5. 负载均衡设备将响应传递给客户端。

优势和好处

负载均衡提供了多方面的好处,包括:

  1. 高可用性:通过将流量分发到多个服务器,即使某个服务器出现故障,系统仍然可用,避免了单点故障。
  2. 性能优化:负载均衡确保请求平均分布到后端服务器,提高了响应时间和处理能力,减轻了服务器的负载。
  3. 扩展性:可以随时添加或移除服务器,以应对不断增长的流量需求,而无需中断服务。
  4. 安全性:负载均衡器可以提供一层防御,以保护服务器免受某些网络攻击,如DDoS攻击。
  5. 简化管理:通过统一管理多个服务器,降低了系统管理的复杂性。

算法和策略

负载均衡使用不同的算法和策略来选择后端服务器,其中一些常见的包括:

  • 轮询(Round Robin):按顺序依次分配请求给每个服务器,均匀分配负载。
  • 最小连接数:选择当前连接数最少的服务器,以确保每个服务器的负载相对平衡。
  • 最少响应时间:选择响应时间最短的服务器,以提供最佳性能。
  • IP散列(IP Hashing):根据客户端IP地址的散列值将请求路由到特定服务器,确保相同客户端的请求总是到达同一服务器。

应用领域

负载均衡广泛应用于以下领域:

  • 大型网站和应用程序,以确保高可用性和性能。
  • 云计算环境,以平衡虚拟机或容器之间的负载。
  • 数据中心网络,以管理流量分发到服务器集群。
  • 高度可扩展的应用程序,如社交媒体平台和在线游戏。

总之,负载均衡是一项关键的技术,可以帮助组织实现高效的网络流量管理,提高性能和可用性,并应对不断增长的网络流量需求。

Nginx 的反向代理 

Nginx通过配置conf/nginx.conf文件中的proxy_pass属性,实现代理站点的配置

这段代码定义了一个Nginx服务器配置。该服务器监听80端口,当接收到来自 xxx.com域名的请求时,会在指定的目录/data/www/paccount中查找网页文件(index.html、index.htm、index.php),如果找不到,会返回index.html文件。同时,对于/paccount路径的请求,会将请求转发到http://xxx.xxx.xxx.xxx:8088地址的服务器上,并传递一些HTTP头信息,比如HostREMOTE-HOSTX-Real-IPX-Forwarded-For

  • proxy_set_header Host $http_host;: 将客户端请求的Host头信息传递给代理服务器,用于指定原始请求的目标主机。

  • proxy_set_header REMOTE-HOST $remote_addr;: 将客户端的IP地址传递给代理服务器,通过$remote_addr获取。

  • proxy_set_header X-Real-IP $remote_addr;: 同样将客户端的真实IP地址传递给代理服务器,使用$remote_addr获取。

  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;: 将客户端的原始IP地址加入X-Forwarded-For头信息中,用于追踪请求的原始来源。

  • proxy_pass http://xxx.xxx.xxx.xxx:8088: 将请求代理到指定的目标服务器,这里是http://xxx.xxx.xxx.xxx:8088

server
  {
    listen       80;
    server_name  xxx.com;
	  index index.html index.htm index.php;
    root  /data/www/paccount;
    try_files $uri $uri/ /index.html;
	  location /paccount
	{
		proxy_set_header Host $http_host;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://xxx.xxx.xxx.xxx:8088;
	}
	
}

应用场景

正向代理和反向代理在各种应用中都有广泛的用途:

  • 正向代理可用于绕过地理限制,访问受限制的内容,同时保护用户隐私。
  • 反向代理可用于负载均衡,确保服务器的稳定性和可用性,以及提供安全性。
  • 它们都是网络安全的一部分,可用于防止DDoS攻击、WAF(Web应用防火墙)和SSL终止等。

总之,正向代理和反向代理是网络通信中的重要组成部分,它们分别代表了代理服务器在不同方向上的应用。了解它们的工作原理和应用场景有助于更好地管理网络流量、提高性能和增强安全性

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

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

相关文章

vue3后台管理系统之pinia及持久化集成使用

安装依赖 pnpm i pinia 在src目录下创建store 创建大仓库 //仓库大仓库 import { createPinia } from pinia //创建大仓库 const pinia createPinia() //对外暴露:入口文件需要安装仓库 export default pinia 全局注册pinia 配置用户仓库pinia管理数据 // 创建用…

JavaSE入门---认识Java数组

文章目录 一. 数组的基本概念1.1 为什么要使用数组?1.2 什么是数组?1.3 数组的使用 二. 数组是引用类型三. 数组的应用场景四. 数组中的常用方法五. 二维数组 一. 数组的基本概念 1.1 为什么要使用数组? 想象这样的一个场景:期末…

混淆技术研究笔记(七)Ant扩展介绍

ant 扩展官方文档:https://ant.apache.org/manual/develop.html Writing Your Own Task 编写你自己的任务 1. 创建一个XXTask类 创建一个Java类继承org.apache.tools.ant.Task ,实际上不继承也可以,定义一个 execute() 方法就可以&#xf…

【python】制作一个windows端自动化工具!

作为一名自动化工程师,这一章,带大家来看看我是如何制作一个windows端的自动化工具,本章节内容我会从基础的环境配置、基础模块介绍、框架设计、实际运用等方面来讲解,对于想要未来从事该行业的人来说,希望这篇文章能给…

公司重要文件防泄密

公司重要文件防泄密是企业管理中一项非常重要的任务,今天分享几个可以防止公司重要文件泄密的方式: 1、建立完善的文件管理制度 企业应该制定严格的文件管理制度,包括文件分类、加密、访问权限的管理等。确保每个员工都了解文件管理制度并严…

【力扣1528】重新排列字符串

👑专栏内容:力扣刷题⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、题目描述二、题目分析1、Java代码2、C代码 一、题目描述 给你一个字符串 s 和一个长度相同的整数数组 indices。 请你…

GLIP DetCLIP

1 GLIP: 十分钟解读GLIP:Grounded Language-Image Pre-training - 知乎 Grounded Language-Image Pre-training(GLIP)论文笔记 - 知乎 GLIP的主要贡献如下: 将phrase grounding和目标检测任务统一,将image和text pr…

Docker 快速入门体验

Docker 是什么? Docker 是一个开源项目,它能够自动化部署应用程序,通过所谓的容器来实现。这些容器允许开发者将自己的应用以及依赖打包到一个可移植的容器中,然后发布到任何流行的 Linux 或 Windows 机器上也可以实现虚拟化。Do…

Linux系统中配置系统

在Linux系统中配置系统设置->网络设置代理的详细教程如下: 首先,确保您已经安装了NetworkManager和nmtui。在终端中输入以下命令: sudo apt-get update sudo apt-get install network-manager nmtui 打开系统设置。在桌面上点击“设置”…

文件和命令的查找与处理

1.命令查找 which which 接命令 2.文件查找 find 按文件名字查找 准确查找 find / -name "hosts" 粗略查找 find / -name "ho*ts" 扩展名查找 find / -name "*.txt" 按文件类型查找 find / -type f 文件查找 find / -ty…

哈夫曼树实现哈夫曼编码(C++)

题目要求:根据哈夫曼编码的原理,编写一个程序,在用户输入结点权值的基础上求赫夫曼编码,并能把给定的编码进行译码。 (1)初始化:从键盘输入一字符串(或读入一文件)&…

【微服务】spring webflux使用详解

目录 一、webflux介绍 1.1 什么是webflux 1.2 什么是响应式编程 1.3 webflux特点 二、Java9中响应式编程 2.1 定义事件流源 2.2 实现订阅者 三、Spring Webflux介绍 四、Reactor 介绍 五、Reactor 常用API操作 5.1 Flux 创建流操作API 5.2 Flux响应流的订阅 5.3 Fl…

PHP WAP餐厅点餐系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP餐厅点餐系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 PHP WAP餐厅点餐系统 代码 https://download.csdn.net/download/qq_41221322/88440001 二、…

Kubeadm部署k8s集群 kuboard

目录 主机准备 主机配置 修改主机名(三个节点分别执行) 配置hosts(所有节点) 关闭防火墙、selinux、swap、dnsmasq(所有节点) 安装依赖包(所有节点) 系统参数设置(所有节点) 时间同步(所有节点) 配…

【密码学】第三章、分组密码

DES、IDEA、AES、SM4 1、分组密码定义(按照五个组成部分答) 密钥空间:属于对称加密算法kekd明密文空间:将明文划分为m比特的组,每一块依次进行加密加解密算法:由key决定一个明文到密文的可逆映射 2、发展…

C语言入门-1.1 C语言概述

想要学好一门计算机编程语言,就和谈一个女朋友是一样的,需要对其深入了解。 1、计算机语言 (1)什么是计算机语言? 顾名思义,就是计算机之间交流的语言,就和人一样,咱们都是使用普通…

中文编程开发语言工具编程实际案例:美发店会员管理系统软件编程实例

中文编程开发语言工具编程实际案例:美发店会员管理系统软件编程实例 中文编程开发语言工具编程实际案例:美发店会员管理系统软件编程实例。 软件功能: 1、系统设置:参数设定,账号及权限设置,系统初始化&a…

PHP的四层架构

PHP的4层架构是一种软件设计模式,用于将一个PHP应用程序划分为不同的层次,以实现解耦、可扩展和易于维护的代码结构。这个架构通常由以下四个层次组成: 1、 表现层(Presentation Layer): 表现层是与用户直…

动态规划解股票类型

文章目录 单只股票买卖多次买卖单只股票最多两次买卖股票最多买k次含冷静期含手续费 单只股票买卖 买卖股票的最佳时机 关键思路:找到一个值,他与之后的最大值之差最大。 用minprice记录最小的值,用maxprofit记录最大的收益。 想清楚一个点…

麒麟kylinOS 2303制作自定义免交互安装镜像

原文链接:麒麟kylinOS 2303制作自定义免交互安装镜像 hello,大家好啊,今天给大家带来一篇麒麟kylinOS 2303制作自定义免交互ISO安装镜像的文章,内容相对来说比较简单,测试安装了一个360浏览器软件,后续复杂…