使用Nginx反向代理来实现简单的负载均衡

LoRA学习: SX1276/SX1277/SX1278对比 Lora芯片 SX1276/SX1277/SX1278的比较SX1276/7/8是一种半双工传输的低中频收发器,配备标了标准FSK和远距离扩频Lora调制解调器。该芯片可以用于超长距离的Lora扩频通信,并且抗干扰性强,同时达到低功耗要求。1、芯片关键参数对比: 可以看出SX1276的带宽范围为 7.8~500kHz ,扩频 因子6~12,并覆盖所有可用频段。 SX1277的带宽和频段方位与 S 阅读详情

Nginx反向代理的原理优点:

反向代理可以简单的理解为:代理服务器来接收internet上的服务器请求,然后将请求转发给内部的服务器上,然后将结果返回给internet上请求的客户端,所以代理服务器对外表现出来的只是一台服务器。反向代理服务器也称为Web服务器加速,针对web服务器提供加速功能。他作为代理服务器,并不针对浏览器用户,而是针对一台或者多台特定的web服务器。可以缓存web的页面,降低web服务器的访问量,从而来降低web服务器的负载,实施反向代理,只要将反向代理设备放置在一台或多台Web服务器前端即可。当互联网用户访问某个WEB服务器时,通过DNS服务器解析后的IP地址是代理服务器的IP地址,而非原始Web服务器的IP地址,这时代理服务器设备充当Web服务器,浏览器可以与它连接,无需再直接与Web服务器相连。因此,大量Web服务工作量被转载到反向代理服务上。不但能够很大程度上减轻web服务器的负担,提高访问速度,而且能够防止外部网主机直接和web服务器直接通信带来的安全隐患。

Nginx proxy是Nginx的王牌功能,利用proxy基本可以实现一个完整的7层负载均衡,它有这 些特色:

1. 功能强大,性能卓越,运行稳定。

2. 配置简单灵活。

3. 能够自动剔除工作不正常的后端服务器。

4. 上传文件使用异步模式。

5. 支持多种分配策略,可以分配权重,分配方式灵活 

项目拓扑:

配置环境:

三台CentOS6.2X86  1台做Nginx Proxy  2台Apache做页面测试服务器

配置步骤:

在安装之前首先解决依赖包的问题,pcre-devel openssl zlib-devel 

<!--[if !supportLists]-->一、<!--[endif]-->安装nginx服务器

<!--[if !supportLists]-->1.       <!--[endif]-->后台的web服务我们使用的是Apache服务,关于Apache的安装部署我们在这里就不做详细说明了,我们的重点在nginx方向代理怎么配置。

<!--[if !supportLists]-->2.       <!--[endif]-->安装Nginx服务

 
  1. yum -y install make 
  2.  
  3.    yum -y install pcre pcre-devel openssl-devel zlib-devel gcc gcc-c++ 
  4.  
  5.    mkdir /usr/local/site/nginx -p 
  6.  
  7.    useradd -s /sbin/nologin www 
  8.  
  9.    rpm -qa | grep httpd 
  10.  
  11.    ./configure --prefix=/usr/local/site/nginx/ --user=www --group=www  \ 指定Nginx用户组 
  12.  
  13. --with-http_stub_status_module  \  非核心模块,获取从上次开启之后Nginx的状态 
  14.  
  15. --with-http_ssl_module    开启SSL模块 
  16.  
  17.   make && make install 

<!--[if !supportLists]-->3.       <!--[endif]-->修改nginx主配置文件,主配置文件路径:/usr/local/site/nginx/conf/nginx.conf,最好配置文件作下备份;

 
  1. user  www;                                 指定nginx的运行用户, 
  2.  
  3. worker_processes  1;              指定线程,默认情况下Nginx是单线程运行, 
  4.   
  5.  
  6. #error_log  logs/error.log;    日志模块 
  7.  
  8. #error_log  logs/error.log  notice; 
  9.  
  10. #error_log  logs/error.log  info; 
  11.  
  12. #pid        logs/nginx.pid;            //inx主进程ID 
  13.  
  14. events { 
  15.  
  16.     user epoll;        //inx的高效模式; 
  17.  
  18. worker_connections  65535;                   //文件最大的连接数; 
  19.  
  20. } 
  21.    
  22.  
  23. http { 
  24.  
  25.        include       mime.types;                     //置文件模块; 
  26.  
  27.     default_type  application/octet-stream;             //核心配置文件模块; 
  28.  
  29.     sendfile        on;                      //开启高效传输模式; 
  30.  
  31.     tcp_nopush     on;                       //防止网络端口阻塞;   
  32.  
  33.     #keepalive_timeout  0; 
  34.  
  35.     keepalive_timeout  65;  
  36.  
  37.     #gzip  on;                  //开启压缩模块,需要注意的是在配置文件中开启之后是不生效的,还需要加载gzip模块 
  38.   
  39.  
  40.     server { 
  41.  
  42.         listen       80;               //监听的80端口 
  43.  
  44.         server_name  proxy.rsyslog.net;        //指定代理服务器的域名 
  45.  
  46.         location / { 
  47.  
  48.             root   html;                 //配置文件所在的目录,这里是相对路径 
  49.  
  50.             index  index.html index.htm;    //页面文件的类型; 
  51.  
  52.         } 
  53.  
  54.         error_page  404              /404.html;         //相关错误提示页面 
  55.  
  56.         error_page   500 502 503 504  /50x.html; 
  57.  
  58.         location = /50x.html { 
  59.  
  60.             root   html; 
  61.  
  62.         } 
  63.  
  64.     } 
  65.  
  66. } 

然后重启服务测试服务是否正常,links proxy.rsyslog.net 域名需要在dns服务器上配置正确

Nginx支持不间断运行,启动的命令

kill -HUP `cat /usr/local/site/nginx/logs/nginx.pid`

查看Nginx服务状态,确定正常之后我们来配置Nginx Proxy,查看Nginx端口

 
  1. [root@localhost conf]# ps -ef | grep nginx 
  2.  
  3. root     27276     1  0 15:53 ?        00:00:00 nginx: master process ./nginx 
  4.  
  5. www      27315 27276  0 16:03 ?        00:00:00 nginx: worker process 
  6.  
  7. root     27317 25195  0 16:05 pts/0    00:00:00 grep nginx 
 

<!--[if !supportLists]-->二、<!--[endif]-->配置Nginx 反向代理服务器,反向代理服务器的配置如下;需要修改两个两个地方,在HTTP字段里面修改和Server字段中修改,在下图中只把需要添加的文件列出来即可。

 
  1. http { 
  2.  
  3.     include       mime.types; 
  4.  
  5. default_type  application/octet-stream; 
  6.  
  7.     client_max_body_size 300m;             //允许客户端请求的最大的单个文件字节数 
  8.  
  9.     client_body_buffer_size 128k;        //缓存区代理用户端文件字节数 
  10.  
  11.     client_body_temp_path /dev/shm/client_body_temp;     //请求试图写入到缓存文件的目录路径 
  12.  
  13.     proxy_connect_timeout600;              //和后端服务器连接的超时时间, 
  14.  
  15.     proxy_read_timeout 600;                  //连接成功等待后端相应的时间,默认是60S 
  16.  
  17.     proxy_send_timeout 600;             //后端服务器的回传时间,规定服务器在一定的时间内传送完。 
  18.  
  19.     proxy_buffer_size 16k;                  //代理服务器的缓存文件头部文件大小,默认是4K 
  20.  
  21.     proxy_buffers 4 32k;                    //后端真是服务器的数量和大小 
  22.  
  23.     proxy_busy_buffers_size 64k;            //当系统忙事,申请更大proxy_buffer 
  24.  
  25.     proxy_temp_file_write_size 64k;         //写入临时目录的文件大小 
  26.  
  27.     proxy_temp_path /dev/shm/proxy_temp;    //指定一个目录来缓存比较大的代理请求 
  28.  
  29.  
  30. 如下是HTTP负载均衡模块upstream 指定设置一群服务器,服务器可以指定不同的权重,默认为1。Nginx支持5种方式的查询, 
  31.  
  32. 1、  轮询 Nginx默认的查询方式 
  33.  
  34. 2、  Weight 指定分配的轮询方式,根据后端服务器的性能来做权重,在此案例中我们使用这种方式来轮询的 
  35.  
  36. 3、  Ip_hash 每个请求按照ip的hash结果分配,这样每个IP地址就可以固定的访问后端的一台服务器,解决了session的问题 
  37.  
  38. 4、  Fair 第三方模块,这个原理是按照响应时间的优先来分配的, 
  39.  
  40. 5、  url_hash    按照url的hash结果来分配请求,使每个url定向到同一个后端的服务器; 
  41.  
  42.          upstream cluster { 
  43.  
  44.              server 192.168.100.238:80 weight=8 max_fails=2 fail_timeout=30s; 
  45.  
  46.              server 192.168.100.248:80 weight=8 max_fails=2 fail_timeout=30s; 
  47.  
  48.          }   
  49.  
  50.     server { 
  51.  
  52.         listen       80; 
  53.  
  54.         server_name  localhost; 
  55.    
  56.  
  57.         location / { 
  58.  
  59.             root   html; 
  60.  
  61.             index  index.html index.htm; 
  62.  
  63.             proxy_pass http://cluster/;       //指定需要代理的URL, 
  64.  
  65.             proxy_redirect off;         //如果需要从后端打开location和Refresh字段,可以开启。 
  66.  
  67.             proxy_set_header X-Real-IP $remote_addr;           //允许将发送到后端的服务器请求重新定义或者增加一个字段,这个可以是变量也是文本组合。 
  68.  
  69.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;      //联系下面PS中所写,在后端web中就算加上$http_x_Forwarded_for这条,也得不到用户的IP,所以在nginx反向代理添加Header头信息 X-Forwarded-For在配合后端服务器日志文件的$http_x_Forwarded_for这条就可以获得用户的IP地址了。 
  70.  
  71.             proxy_set_header Host $host;               //首先说明 proxy_set_header 指令在向反向代理的后端Web服务器发起请求时添加指定的 Header头信息,后端web服务器有多个基于域名的虚拟主机时,通过头信息Host,用于指定请求的域名,这样后端web才能识别反向代理请求哪个虚拟主机处理。 
  72.  
  73.             proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 
  74.  
  75.             http_504 http_404; 服务器头部超时相应的各种状态 
  76.  
  77.         } 
  78.  
  79. } 
  80.  
  81. } 

配置完成之后平滑重启Nginx服务

 
  1. kill -HUP `cat /usr/local/site/nginx/logs/nginx.pid` 

<!--[if !supportLists]-->三、<!--[endif]-->测试,刷新测试能正常进行负载,可以根据自己的环境来对nginx proxy的设置轮询模式;

 

本文出自 “Linux、虚拟化” 博客,请务必保留此出处http://devliangel.blog.51cto.com/469347/1142008

eclipse-画板-java 大学软件工程课程设计-画板 立即下载

相关推荐

DB2错误代码(DB2错误代码大全)

DB2错误代码大全: DB2 SQLSTATE 消息 异常 SQLSTATE 消息 列示 SQLSTATE 及其含义。SQLSTATE 是按类代码进行分组的;对于子代码,请参阅相应的表。

Nginx反向代理使用方法小总结

由于本专栏前面文章几篇文章综合性较强所以在此特意总结一下反向代理的几种方式,以便于在使用时方便查阅,本文写下时博主在配置一个OJ项目大家感兴趣也可以自己试试配置一下。

一个非常Cool的人 2823

游戏中的数学与物理学

游戏中的数学与物理学游戏中的数学与物理学游戏中的数学与物理学游戏中的数学与物理学

6、Nginx实现反向代理

Nginx 反向代理是一种常见的应用场景,它允许 Nginx 作为中间服务器接收客户端的请求,并代理转发这些请求到后端的真实服务器。这种配置使得客户端只需要与 Nginx 交互,而后端服务器对客户端是透明的。 ngx_http_proxy_module: 将客⼾端的请求以http协议转发⾄指定服务器进⾏处理。 ngx_st...

weixin_37540600的博客 521

公司综合管理信息系统

包括公司人员信息管理,财务信息分析,人员工资管理,公司各项业务的管理,安装信息以及维护等。该软件为普通的公司数据库开发应用产品。

Unity游戏Mono注入实战:从反编译到功能扩展

本文详细介绍了Unity游戏Mono注入的完整实战流程,从使用dnSpy反编译游戏核心逻辑,到编写自定义C#功能DLL,再到利用SharpMonoInjector进行动态注入。文章深入讲解了如何通过Harmony库拦截修改游戏方法,并介绍了使用MelonLoader框架和UnityExplorer进行高级模组开发与调试,最终通过一个游戏对象透视(ESP)案例演示了功能扩展的实现。

weixin_29018335的博客 458

Nginx详解 五:反向代理

比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间 来分配请求,响应时间短的优先分配。当客户端再次请求访问相同资源时,反向代理可以直接返回缓存中的响应,无需二次请求,减少对后端服务器的请求压力,并加快响应速度。按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。根据后端服务器的连接状况进行分配客户请求,连接最少的服务器将被有限分配客户端请求。

很多时候犯错都是在不知情的情况下发生的 2万+

360加固DEX解密与ELF修复技术解析

本文深入解析360加固的DEX解密与ELF修复技术,详细介绍了其多层保护机制、Java层入口分析、Native层加载流程及反调试绕过技巧。通过RC4和zlib解密技术,结合Frida工具实现内存Dump和ELF文件修复,为逆向工程师提供实用解决方案。

weixin_29327525的博客 506

Nginx 理论+实例超详细讲解

历时一周学完的nginx服务架构,基于CentOS8系统部署,其中包含各种模块与实操,可以轻松入门并运用到实际操作中

cxyxt的博客 4390

CrossOver实战:在Mac上流畅运行《梦幻西游》端游与搬砖指南

在跨平台应用开发与系统兼容性领域,如何让为特定操作系统设计的软件在其他平台上运行,是一个经典的技术挑战。其核心原理在于通过兼容层或转译技术,将程序的系统调用和图形接口指令实时转换为目标系统能理解的格式。这项技术的价值在于极大地扩展了硬件设备的软件生态,让用户无需依赖虚拟机或双系统即可无缝使用关键应用。在游戏、专业工具等场景中,这能显著提升工作效率和用户体验。本文以经典端游《梦幻西游》为例,详细解析如何在搭载Apple Silicon或Intel芯片的Mac上,借助CrossOver这一成熟的兼容层方案,构建

weixin_30129025的博客 554

DLMS—Cryptographic algorithms—(Green-Book)加密算法

密码学是数学的一个分支,基于数据的转换,并且可以用来提供多种安全服务:保密性、数据完整性、认证、授权和不可否认性。密码学依赖于两个基本组成部分:算法(或密码学方法)和密钥。算法是一个数学函数,而密钥是在转换过程中使用的参数。密码算法和密钥用于对数据应用密码保护(例如,加密数据或生成数字签名),以及移除或检查保护(例如,解密加密的数据或验证数字签名)。密码哈希函数:这类函数不需要密钥(尽管它们可以以使用密钥的模式使用)。哈希函数通常用作算法的一个组成部分,以提供安全服务。见9.2.3.2节。对称密钥算法。

一个bug是bug,多个bug能work 1706

使用nginx简单实现反向代理和负载均衡

nginx 这个轻量级、高性能的 web server 主要可以干两件事情:   〉直接作为http server(代替apache,对PHP需要FastCGI处理器支持);   〉另外一个功能就是作为反向代理服务器实现负载均衡   以下我们就来举例说明如何使用 nginx 实现负载均衡。因为nginx在处理并发方面的优势,现在这个应用非常常见。当然了Apache的 mod_prox

xingyunLOST的专栏 723

小程序设计中的区块链应用:数字藏品实现

本文旨在为开发者提供在小程序中实现区块链数字藏品功能的完整技术方案。区块链与数字藏品的基础概念智能合约的设计与实现小程序与区块链的交互方式数字藏品的完整实现流程文章将从基础概念入手,逐步深入到技术实现层面,最后通过完整项目案例展示数字藏品在小程序中的实现方式。每个技术点都会配合代码示例和架构图进行说明。区块链:一种分布式数据库技术,通过加密算法保证数据不可篡改数字藏品:基于区块链技术的数字资产,具有唯一性和可验证性NFT。

小程序开发 1350

使用nginx的反向代理实现简单的负载均衡的轮询算法

使用nginx开启负载均衡1、先创建俩个tomcat的目录2、更改第二个tomcat的端口号为80813、在tomcat中上传一个文件4、开启俩个tomcat端口号5、开放相对应的端口号命令6、修改nginx的配置文件7、修改本地的hosts文件8、然后重启nginx 使用俩个tomcat进行模拟负载均衡的轮询算法: 简单的说,轮询算法就是将多个任务平均分摊到自己代理的服务器上,也可以通过权重weight=****的不同,轮转的方式也不一样 1、先创建俩个tomcat的目录 相关命令为:mkdir * mk

nice、小兴的博客 260

图像分割 - 使用Mask R-CNN模型在COCO数据集上进行图像分割任务

图像分割是计算机视觉领域的一个重要任务,它旨在将图像中的每个像素分类为对象或背景。Mask R-CNN是一种基于区域的卷积神经网络,可用于图像分割任务。它是Faster R-CNN的扩展,将目标检测与图像分割结合起来,能够同时检测和分割对象。在本博客中,我们将使用Mask R-CNN模型在COCO数据集上进行图像分割任务。我们将介绍如何下载和准备COCO数据集,以及如何使用Mask R-CNN模型进行训练和推理。

斌擎科技 1187

用 YOLOv11‑Seg 做工地实例分割:从 0 起步到效果调优,真香!

这不是一篇“官方文档翻译”,而是一篇。

weixin_43199439的博客 776

nginx-rewrite、if、浏览器分离、反向代理、负载均衡

说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道;此时就设计到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生活中的专卖店~客人到某达斯专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是某达斯厂家,目标角色就是用户。

2201_75912662的博客 1029

Linux系统安装部署Redis完整教程(图文详解)

最近需要在Linux服务器安装部署Redis,参考了网上很多的文章,比较零碎,所以我自己写了一篇完整的Redis安装部署文档,在部署Redis之前重装了我的华为服务器,就是为了给大家一步步阐述我的操作过程,配合图文进行讲解更加通俗易懂!

黄团团的个人博客 6690

面试加分项之 Nginx 反向代理与负载均衡

学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等。用一句别人开玩笑的话来说,java十年前的技术现在还能用,而前端的技术就不是这样的了 突然想起了deno项目发布的时候,一个搞笑的issue,“求别更新了,老子学不动了”。虽然看起来是一个玩笑的issue,但却道出了前端们不得不表现出来的疲态,知识点越来越庞大,学习的内容越来越多 也听到一些朋友...

大灰狼的小绵羊哥哥的博客 642

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Nginx的反向代理与负载均衡

正向代理服务器是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容

qq_49511498的博客 613

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

linux+nginx+tomcat通过反向代理实现负载均衡

最近在看一本关于JavaWeb实现网站分布式架构的书,里面提到了通过负载均衡,可以避免由于大规模访问所导致的服务器瘫痪或者由于单一服务器造成的唯一一台服务器故障后,导致用户无法访问等问题。实现负载均衡的方式有很多,有硬件方式,如:F5服务器 或者 软件方式,如:lvs(Linux虚拟服务器)或Nginx。我选择了利用Nginx来实践负载均衡。Nginx简介nginx是通过反向代理的方式实现负载均衡...

superyu1992的专栏 2388

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: MySQL添加用户及分配相应的权限详解
下一篇: JS获取Cookie值
RuanJava
博客等级 码龄17年 13粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值