Nginx+Apache动静分离

  Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项

  针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。

  在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式

一、Nginx正则匹配

常用的正则匹配规则

^~ : 标识符后面跟一个字符串。Nginx将在这个字符串匹配后停止进行正则表达式的匹配,如 location  ^~ /images/,它在匹配了/images/这个字符串后就停止搜索其它正则的location

= : 标识精确查找地址,如 location = / ,只会匹配uri为/的请求

~ : 区分大小写的匹配

~* : 不区分大小写的匹配

!~ : 对区分大小写的匹配取非

!~* : 对不区分大小写的匹配取非

经常会用到的正则表达式有

*   ?   +    .   ()     |     ^    $

特殊字符说明{n} : 重复n次

{n,} :  重复n次或更多次

{n,m} : 重复n到m次

*? : 重复任意次,但尽可能少重复

+? : 重复1次或更多次,但尽可能少重复

?? : 重复0次或1次,但尽可能少重复

{n,m}? : 重复n到m次,但尽可能少重复

{n,}? : 重复n次以上,但尽可能少重复

 二、配置实现Nginx动静分离

1、需求分析:本案例根据企业需要,将配置Nginx实现动静分离,对php页面的请求转发给LAMP处理,而静态页面交给Nginx,以实现动静分离。客户请求静态数据给Nginx,Nginx直接应答客户端,当请求动态数据到Nginx时,Nginx让客户端去找LAMP,通过代理的方式,LAMP就和客户端连接了。

2、配置步骤:分别配置动态分离和静态分离

(1)架设并调试后端LAMP架构,指定域名为www.bt.com,IP地址为192.168.10.23,创建动态页面test.php。

(2)配置Nginx(192.168.10.22)处理动态页面请求,并把域名改为www.test.com 在server{};段中加入以下代码,检测语法后,重启Nginx

  location ~ .php$ {                                        #匹配以.php为结尾的动态页
  proxy_pass  http://LAMP的IP地址(192.168.10.23) : 80;      #proxy_xy 意思是代理交给谁
  }

(3)客户端输入http://192.168.10.22/test.php 成功后动态分离就实现了,接下来再配置静态分离

(4)配置Nginx处理静态页面请求,在server{};中加入以下代码,检测语法后,重启Nginx

location ~ .*.(gif|jpg|jpeg|bmp|swf)$  {                #这段代码意思是任意网址以这5种格式为结尾就到Nginx根目录下的html文件夹寻找资源
  root   html;
  expires 1d; #缓存一天   }

(5)在nginx的html目录中,放入图片aa.jpg,然后在apache的动态测试页test.php中添加

<html>
<body>
<img src="http://192.168.10.22/aa.jpg">
</body>
</html>

(6)客户端输入http://192.168.10.22/test.php测试,由于test.php是动态页面,因此客户端会找到LAMP架构中的Apache,然后调取图片aa.jpg是静态数据,所以从Nginx提取,最后反馈给客户端。

原文地址:https://www.cnblogs.com/mangood/p/6048720.html