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

一、前提

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

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

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

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

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

三、Nginx 反向代理实现

1、网络拓扑

11f748310b56ee03274a71d5c2410395.png

2、环境准备

843776ceefaa5e66af080c7d94b96bd0.png

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

e9e8c432126428f04e76cd83c8a7780d.png

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

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

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

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

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

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

16df6b631dcdda64c8ce17033467a4e4.png

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

bc47affdc5b3f466e9d955f4f3870df0.png

如上图:

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

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

index:配置支持的文件类型

root:配置全局站点路径

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

c、配置日志文件

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

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

[root@weba config]# vim 81.conf

7e8f19e67b4eb022551bba9b6425b1a2.png

如上图:

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

如图:

4ca04e0758c5c88acf1b40e39f90db80.png

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

如图:

2e0bc0c8e4f3d24706e75dc235626fdf.png

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

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

启动 httpd 服务:

service httpd start

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

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

This is a PHP page

Real ServerA

“4"

This is a PHP page !

$link = new mysqli("192.168.20.150

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

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

相关文章

scala shuffle

val arr (0 to 100).map(_ * 1d) /// 下面这一步只能用to不能用until,scala里面实现返回的两个Range继承路径不同,不能混用 val a_shuffled util.Random.shuffle(0 to arr.size -1).map(arr(_)) 转载于:https://www.cnblogs.com/suanec/p/6043286.html…

计算机、数学、运筹学等领域的32个重要算法

来源: 必达智库奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多数是计算机科学家&am…

Fibonacci(求前四位数)

FibonacciTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription2007年到来了。经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]0,f[1]1;f[i] f[i-1]f[i-2](i>2))的值全部给背了下来。 接…

fiddler如何设置过滤https_手把手教你如何给网站设置https

我也是小白一枚,最近开了一个博客站点,个人博客除了微信分享功能不能开通外,其他的功能我都要试着做一下,磨练磨练自己。跟一些大佬分享有所不同,我这篇文章是以一个小白的角度来写,这样有一个优势&#xf…

php 解释语言,php是解释型语言吗

PHP是属于解释型语言,还是编译型语言?下面先来看一下计算机语言的发展史:第一代:机器语言,全部都是01010二进制代码,计算机能够直接的识别,运行效率是最高的,但是难编,难…

清华大学施路平:发展人工通用智能最好的时机到了!

来源:学术头条 今年8月,一辆来自清华的无人驾驶自行车登上了Nature的封面。这是中国的人工智能芯片首次登上Nature,在全球引发热议。这辆自行车不仅可以平衡自身,还可以绕过障碍物,甚至可以响应简单的声音命令。自行车…

Debian10降级安装php,如何在Debian 10 Linux上安装PHP

PHP是最常用的服务器端编程语言之一。在本指南中,我们将讨论如何在Debian 10 Buster上安装PHP。我们还将向您展示如何将PHP与Nginx和Apache集成。Debian 10随附PHP 7.3版,最流行的CMS和框架(如WordPress,Magento和Laravel)均支持该版本。先决…

设置线程堆栈大小_哇擦,传说中的堆栈溢出和快速排序

stack overflow堆栈溢出和快速排序这两个概念对开发人员来说并不陌生,但是通知都只是听说过,真正开发过程中却很少会遇到。我也是敲代码好些行后非常有幸撞上了,而且还是两个一起出现的,这其中过程的滋味还是相当酸爽,…

模板引擎的简单原理template

​var templateStr "我的名字叫<%name%>我是一只小狗,今年<%age%>岁。";var data {name:旺财,age:18};/*会利用正则来匹配*///console.log(/<%\s*([^%>]\S)\s*%>/.exec(templateStr));var match /<%\s*([^%>]\S)\s*%>/.exec(templa…

八张图看懂上海人工智能产业发展现状

来源&#xff1a;中商产业研究院据《行动方案》提出&#xff1a;集聚优势创新资源&#xff0c;聚焦开展专项行动&#xff0c;到2021年&#xff0c;全力打响上海人工智能“一流创新生态”标志性品牌。此外&#xff0c;《行动方案》中还提出多项任务&#xff0c;大力推进上海市人…

- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender

目的是为了点击应用程序左上角的关闭按钮&#xff0c;应用程序消失。转载于:https://www.cnblogs.com/ITliufei/p/6045992.html

车牌号随机函数 php,模拟生成车牌号的程序.程序运行.生成十个随机的车牌子.......

package demo;import java.util.ArrayList;import java.util.Random;//举例: 京C.85100 / 津K.45H88//* 要求:1.车牌子为京字或津字开头,后面字母为 C E F H J K中随机.//* 2.号码为五位.数字和大写字母随机.(数字为0-9, 字母为A-G)//* 3.定义生成号码的方法…

软件版本号命名规范_软件发布版本介绍

一、 软件版本阶段介绍Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主&#xff0c;通常只在软件开发者内部交流&#xff0c;一般而言&#xff0c;该版本软件的Bug较多&#xff0c;需要继续修改。Beta版: 该版本相对于α版已有了很大的改进&#xff0c;消除了严重的…

“情感计算”的蓬勃发展依赖于收集大量的行为和情感数据

Illustration: iStock/IEEE Spectrum来源&#xff1a; IEEE电气电子工程师学会这是一篇guest post。这里表达的观点只是作者的观点&#xff0c;并不代表IEEE Spectrum或IEEE的立场。技术在生理和心理上变得更加亲密&#xff0c;这就产生了对新技术的需求&#xff0c;这些新技术…

Java控制修改手机系统设置,安卓修改大师配置Java运行环境教程 教你快速使用

安卓修改大师是一款专业免费对任何APK安装包进行反编译的软件&#xff0c;但是运行软件之前首先需要配置电脑上的Java运行环境&#xff0c;否则无法运行。下面来说一下如何配置Java环境。类别&#xff1a;编程工具 大小&#xff1a;4.39M 语言&#xff1a;简体中文评分&am…

extJs项目实战

extjs是因为在公司用到一次,也是公司唯一一个extjs的项目,当时拿到这个需求的时候,我有点懵逼,这他妈的什么鬼,参加工作两年不到的纯小白,没办法,这是工作,必须要完成的.硬着头皮做吧,好在最后弄完了,整理一下文档,方便以后学习. /***服务说明模板store*/Ext.define(ProductApp…

取一定范围内随机小数 c_算伪随机概率中C值的快捷方法

目前计算伪随机概率C值的方法&#xff0c;一般是二分法。二分法是个非常讨厌的方法&#xff0c;因为虽然简单却麻烦&#xff0c;想算个稍微精确点的数&#xff0c;需要十分巨大的计算量。如果像高中时那样手动计算&#xff0c;真是要算到眼花。本文给出了一个十分简单快捷的方法…

AI实时特效,魔幻修图,Adobe Photoshop相机拯救PS菜鸟

图片来源&#xff1a;https://twitter.com/beckihagen/status/1191436317005008896/photo/3来源&#xff1a;机器学习研究会订阅号上传一张特效照片需要几步&#xff1f;常规来说需要三步&#xff1a;拍照→修图→发布。为了拯救手残党&#xff0c;Adobe 将 Photoshop 的部分功…

ajax传递json对象 php,ajax 和 php 相互传递 JSON对象(转载)

各位新年快乐,俺把俺写的东西拿出来秀秀,希望大家可以指点一下.原文出处:http://hi.baidu.com/tangtou/blog/item/603a24384674b120b8998f1f.html需要用到的文件有:ajax1.js 在本博客的另一篇文章里,点这里查看它json.js(请到网上下载 http://www.json.org/)json.class.php (请…

北斗卫星现在什么情况?这些数据不能不看

来源 | 微博林晓弈 (知名科学科普博主) 、太空精酿的空间站&#xff08;spacebrewer&#xff09;11月5日凌晨1时43分&#xff0c;在我国西昌卫星发射中心&#xff0c;北斗三号第3颗倾斜地球同步轨道&#xff08;IGSO-3&#xff09;卫星由长征三号乙运载火箭发射升空。至此&…