热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nginx中怎么实现动静分离与负载均衡

本篇文章为大家展示了Nginx中怎么实现动静分离与负载均衡,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有

本篇文章为大家展示了Nginx 中怎么实现动静分离与负载均衡,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1、网络拓扑

Nginx 中怎么实现动静分离与负载均衡

2、环境准备

Nginx 中怎么实现动静分离与负载均衡

我们准备好7台服务器,2 台 MySQL 数据库做高可用,4 台 Web 服务器,其中 2 台装 Nginx+PHP 做动态页面的负载均衡,另外 2 台装  Apache+PHP 做静态页面的负载均衡,1 台 Nginx 服务器,做反向代理服务器。

至于,服务器环境的安装部署,这里就不进行操作了,如有疑问的,可以留言或者查看小弟前面的文章。

3、Nginx 服务器中 Nginx 服务配置文件修改

修改 http 部分

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
Nginx 中怎么实现动静分离与负载均衡

1、重新定义 Nginx 服务的日志记录格式,关于关键字的释义,大佬们可以参阅官网。

2、使用 upstream 关键字定义后端服务器

格式:uptream + 后端节点组名称(可自定义)

server + IP地址 + 权重 + 最大失败次数 + 失败超时时间 意思是:当后端节点连续两次在3秒内无法连接时,将放弃连接该节点,Nginx  将客户端请求发送给下一节点。

修改 server 部分,这里配置为 Nginx 虚拟机

[root@nginx ~]# vim /wdata/nginx/config/80.conf
Nginx 中怎么实现动静分离与负载均衡

1、配置 Nginx location 匹配

分别配置以 .html 、.jpeg 、.jpg 、.gif 、.png 、.php 为扩展名的文件的 location 规则。

proxy_set_header:允许重新定义或添加字段传递给代理服务器的请求头。该值可以包含文本、变量和它们的组合。在本例中意思将真实的客户端地址添加到代理服务器的请求头中。

proxy_pass:设置反向代理的连接,格式为:proxy_pass + http://后端节点组的名称; 。

X-Forwarded-For:简称 XFF 头,它代表客户端,也就是 HTTP 的请求端真实的 IP ,只有在通过了 HTTP  代理或者负载均衡服务器时才会添加该项。

$remote_addr:远端地址,也就是客户端 IP 地址

2、配置站点日志,这里将日志格式指定为我们在 HTTP 部分配置为的 main 规则。

Nginx 反向代理的配置请参照图中进行修改,其他详细的配置参数,请参阅官网,后续继续更新。

四、后端 Nginx 服务节点配置

后端 Nginx 服务器节点主要用来做以 .php 扩展名结尾的站点文件的访问和图片文件的访问,做到将图片资源单独剥离,以降低服务器负载。

1、配置以 .php 为扩展名的站点服务器

[root@weba config]# vim 80.conf
Nginx 中怎么实现动静分离与负载均衡

如上图:

a、listen:配置监听端口,这里配置为 80 端口,在生产环境中,我们可能会配置成 443 端口。

server_name:配置域名,这里是实验环境,因此采用默认未配置域名。

index:配置支持的文件类型

root:配置全局站点路径

b、配置局部站点路径、fastcgi的地址端口(指的是php-fpm的监听地址及端口)、所支持的文件类型等

c、配置日志文件

Nginx 站点的配置大概做到这种配置,基本就可以进行访问,如果在企业中需要更复杂的配置,请参考官方文档。

2、配置单独的图片资源站点

[root@weba config]# vim 81.conf
Nginx 中怎么实现动静分离与负载均衡

如上图:

配置方式跟 1 的配置完全一样,只是修改一下图片资源的路径即可。

WebA 和 WebB 的配置完全一样。最后修改完配置别忘了刷新,用命令:service nginx reload 即可

五、后端 Apache 服务节点配置

1、Apache 服务节点的配置基本也跟 Nginx 差不多,我们这里使用命令修改 Apache 配置文件。

[root@webc ~]# sed -i "s#/home/wwwroot/default#/wdata/http/www#g" /usr/local/apache/conf/httpd.conf  [root@webc ~]# sed -i "s#/home/wwwroot/default#/wdata/http/www#g" /usr/local/apache/conf/extra/httpd-vhosts.conf  [root@webc ~]# sed -i "s#/var/log/wwwlogs#/var/log/wwwlogs#g" /usr/local/apache/conf/httpd.conf  [root@webc ~]# sed -i "s#/var/log/wwwlogs#/var/log/wwwlogs#g" /usr/local/apache/conf/extra/httpd-vhosts.conf  [root@webc ~]# sed -i "s#/var/www#/wdata/http/www#g" /usr/local/apache/conf/extra/httpd-vhosts.conf

在 WebC 和 WebD 中分别执行,主要设置网站根目录和日志目录。

2、修改 Apache 的端口和监听地址

[root@webc ~]# vim /usr/local/apache/conf/httpd.conf

找到 Listen 行,修改为 0.0.0.0:80

如图:

Nginx 中怎么实现动静分离与负载均衡

3、修改 Apache 日志文件格式,方便我们更好阅读 Apache 日志,也可以保持默认。

找到 行,在下面的注释下面添加

LogFormat "%a - %A %t \"%B\" \"%b\" \"%{Foobar}C\" \"%f\" - %h - %H \"%{Foobar}i\" %m \"%{Foobar}n\" \"%{Foobar}o\" - \"%p\" - \"%P\" %q %r %s \"%T\" \"%u\" \"%U\" \"%v\" \"%V\" %X" main

如图:

Nginx 中怎么实现动静分离与负载均衡

至于所添加的参数的含义,大家可参阅 Apache 官方文档。

到此 Apache 配置完成,还有一些关于 Apache 的权限配置等,这里就先不做特殊说明,后期再做更新。

启动 httpd 服务:

service httpd start

六、添加或者上传站点文件

1、在 WebA 中的网站根目录下添加 index.php 文件,内容如下:

      Real ServerA

  

4、在 WebC 的站点根目录添加 index.html 文件,内容如下:

      Real ServerC

  
Nginx 中怎么实现动静分离与负载均衡

2、在浏览器 http://192.168.20.138/index.html ,效果如下图:

Nginx 中怎么实现动静分离与负载均衡
Nginx 中怎么实现动静分离与负载均衡

3、查看 Nginx 负载均衡器的 Nginx 日志。

访问 http://192.168.20.138/index.php 日志如下图:

Nginx 中怎么实现动静分离与负载均衡

如图可以看出,当我们访问 http://192.168.20.138/index.php  时,服务器会将客户端请求按照我们配置的后端节点组中的顺序或者权重依次发给 WebA 和 WebB ,当网页中有图片请求时,也会按照顺序进行访问 WebA 和  WebB 的图片节点。

访问 http://192.168.20.138/index.html 日志如下图:

Nginx 中怎么实现动静分离与负载均衡

如图可以看出,当我们访问 http://192.168.20.138/index.html 时,对于 html 的请求,会依次发给 WebC 和 WebD  节点服务,而对于图片资源的访问,会将请求发给两台图片服务器。

上述内容就是Nginx 中怎么实现动静分离与负载均衡,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程笔记行业资讯频道。


推荐阅读
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • 本文探讨了Java编程的核心要素,特别是其面向对象的特性,并详细介绍了Java虚拟机、类装载器体系结构、Java类文件和Java API等关键技术。这些技术使得Java成为一种功能强大且易于使用的编程语言。 ... [详细]
  • 本文详细介绍了如何在 MySQL 中授予和撤销用户权限。包括创建用户、赋予不同级别的权限(如表级、数据库级、服务器级)、使权限生效、查看用户权限以及撤销权限的方法。此外,还提供了常见错误及其解决方法。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 本文详细介绍了在XAMPP环境中如何修改Apache和MySQL的默认端口号,并确保WordPress能够正常访问。同时,提供了针对Go语言社区和Golang开发者的相关建议。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • ThinkPHP 数据库配置详解
    本文详细介绍了如何在 ThinkPHP 框架中正确配置数据库连接参数,包括数据库类型、服务器地址、数据库名称等关键配置项。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
author-avatar
蜗蜗家的逆时针
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有