一、前提

企业中,随着用户的增长,数据量也几乎成几何增长,数据越来越大,随之也就出现了各种应用的瓶颈问题。

问题出现了,我们就得想办法解决,一般网站环境,均会使用LAMP或者LNMP,而我们对于网站环境的优化,除了对源代码进行优化、SQL慢查询优化 、SQL创建索引等之外,我们还可以对环境架构进行优化与扩展。

因此,我们引入了 Nginx 对站点实现负载均衡和动静分离,来加快访问速度。

二、Nginx 动静分离与负载均衡的实现机制

Nginx 动静分离与负载均衡的的实现离不开反向代理,什么是反向代理呢?反向代理主要应用于集群环境中,有多个客户端给Nginx服务器发送的请求,当 Nginx 服务器接收到之后,会按照一定的规则将请求分发给了后端的业务处理服务器,此时,请求的来源也就是客户端,是明确的,但是请求具体由哪台服务器处理,并不明确,在这里,Nginx 所扮演的就是一个反向代理角色。通过反向代理,我们无法直接看到后端服务器的服务器信息,因此反向代理具有隐藏业务服务器的作用!

三、Nginx 反向代理实现

1、网络拓扑

2、环境准备

我们准备好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

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

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

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

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

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

[root@nginx ~]# vim /wdata/nginx/config/80.conf

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

如上图:

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

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

index:配置支持的文件类型

root:配置全局站点路径

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

c、配置日志文件

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

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

[root@weba config]# vim 81.conf

如上图:

配置方式跟 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

如图:

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

如图:

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

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

启动 httpd 服务:

service httpd start

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

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

This is a PHP page

Real ServerA

This is a PHP page !

$link = new mysqli("192.168.20.150

nginx动静分离配置_Nginx 动静分离与负载均衡的实现相关推荐

  1. Nginx+memcached+tomcat配置集群session共享负载均衡

    Nginx+memcached+tomcat配置集群session共享负载均衡 配置环境: windows xp下 jdk1.7.0_10      nginx-1.2.6  (附下载)      m ...

  2. nginx动静分离配置_nginx动静分离实战

    通过负载均衡中间件,将动态请求和静态请求进行分离.这样做的好处是,加速访问,动态与静态资源互不影响,即使动态服务不可用,静态资源也能照常访问. 动静分离示意图 准备 我将用三个端口(80,8001,8 ...

  3. nginx动静分离配置_Nginx动静分离

    动静分离   动静分离,就是将JSP.Servlet等动态资源交由Tomcat或其他Web服务器处理,将CSS.js.image等静态资源交由Nginx或其他Http服务器处理,充分发挥各自的优势,减 ...

  4. nginx动静分离配置_Nginx动静分离配置实例

    点击▲关注 "长安大司马"   给公众号标星置顶 更多精彩 第一时间直达 父亲节快乐 HAPPY FATHER'S DAY 1 .什么是动静分离 Nginx 动静分离简单来说就是把 ...

  5. 【Nginx那些事】nginx配置实例(二)负载均衡

    [Nginx那些事]系列 [Nginx那些事]nginx 安装及常用指令 [Nginx那些事]Nginx 配置文件说明 [Nginx那些事]nginx原理解析 [Nginx那些事]nginx配置实例( ...

  6. 学完Nginx/OpenResty详解,反向代理与负载均衡配置,能涨薪多少

    反向代理与负载均衡配置 接下来介绍Nginx的重要功能:反向代理+负载均衡.单体Nginx的性能虽然不错,但也是有瓶颈的.打个比方:用户请求发起一个请求,网站显示的图片量比较大,如果这个时候有大量用户 ...

  7. 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡...

    10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 原文:10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 分布式 ...

  8. nginx系列之八:使用upsync模块实现负载均衡

    ** 前言 ** nginx系列之一:nginx入门 nginx系列之二:配置文件解读 nginx系列之三:日志配置 nginx系列之四:web服务器 nginx系列之五: 负载均衡 nginx系列之 ...

  9. Centos7+Nginx+Keepalived实现Apache服务的高可用负载均衡

    Centos7+Nginx+Keepalived实现Apache服务的高可用&负载均衡 今天是2017年的第一天,昨天也就是2016年的最后一天,我尝试部署了Centos7+Nginx+Kee ...

最新文章

  1. AI人脸识别 生物识别 活体检测 的发展历程
  2. 9月9日项目群管理活动讨论
  3. Premiere Pro CC2015软件安装教程
  4. Scala中的trait特质
  5. idam oracle_oracle错误代码大全(超详细)
  6. java 定时器 的中断程序,STM32定时器中断
  7. 支付宝五福活动抢先开始了!原来今年可以提前集
  8. java 开发 加固态_搭建一个完整的Java开发环境
  9. Java的重写equals但不重写hashCode方法的影响
  10. 拓端tecdat|Matlab马尔可夫区制转换动态回归模型估计GDP增长率
  11. Git小乌龟添加忽略文件
  12. 【SemiDrive源码分析】【驱动BringUp】40 - Touch Panel 触摸屏调试 (Android侧)
  13. 哪种pdf编辑器更方便使用
  14. Android系统预装Chrome并自定义主页
  15. PHP 使用 file_get_contents 接收 POST 的資料
  16. office文件转换为pdf文件
  17. 600G计算机、编程语言网盘分享链接
  18. 大学生!如果让你选择计算机本科最重要的三门课,你会选什么?
  19. 构建知识体系(2):如何构建
  20. (面经总结)一篇文章带你整理面试过程中关于OSI 七层模型的相关知识

热门文章

  1. php管道的概念,让你的php命令行程序处理管道数据
  2. 剑桥大学终身教授T.S.:7大机器学习算法与应用案例
  3. 史上最简单的隐马尔可夫模型讲解
  4. 深入浅出不可思议的中文分词技术
  5. 参会邀请 - ISWC2020 | 第十九届国际语义网会议
  6. 技术动态 | 事理图谱,下一代知识图谱
  7. Android官方开发文档Training系列课程中文版:管理音频播放之控制APP的音量与播放
  8. JavaScript每日学习日记(0)
  9. 石油化工行业需要怎样的工作流平台?
  10. javaweb c3p0连接oracle12c