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提取,最后反馈给客户端。

Nginx+Apache动静分离的更多相关文章

  1. 15 nginx反向代理实现nginx+apache动静分离

    一:nginx反向代理实现nginx+apache动静分离-------------概念--------------------------- nginx反向代理服务器+负载均衡 用nginx做反向代 ...

  2. Nginx网络架构实战学习笔记(三):nginx gzip压缩提升网站速度、expires缓存提升网站负载、反向代理实现nginx+apache动静分离、nginx实现负载均衡

    文章目录 nginx gzip压缩提升网站速度 expires缓存提升网站负载 反向代理实现nginx+apache动静分离 nginx实现负载均衡 nginx gzip压缩提升网站速度 网页内容的压 ...

  3. Nginx 笔记与总结(15)nginx 实现反向代理 ( nginx + apache 动静分离)

    在 nginx 中,proxy 用来实现反向代理,upstream 用来实现负载均衡. 例如有两台服务器,nginx 服务器作为代理服务器,执行 .html 文件,apache 服务器上执行 .php ...

  4. nginx+apache动静分离/负载均衡

    [主从] [Mysql-Master] log-bin=mysql-bin server-id = MariaDB [(none)]> grant replication slave on *. ...

  5. apache+nginx 实现动静分离

    apache+nginx 实现动静分离 http://blog.csdn.net/xysoul/article/details/50347971

  6. nginx+tomcat动静分离结构

    本文采用另一种策略对动静分离进行演示,它的大致结构如图 2 所示. 图 2. 本文设计的动静分离结构 在本文中,我们将静态资源放在 A 主机的一个目录上,将动态程序放在 B 主机上,同时在 A 上安装 ...

  7. 使用nginx实现动静分离的负载均衡集群

    一.概述: LB负载均衡集群分两类: LVS (四层)和 nginx或haproxy (七层) 客户端通过访问分发器的VIP来访问网站 |现在应用更复杂,比如现在网站页面有: .php .html . ...

  8. 《nginx 五》nginx实现动静分离

    Nginx+Tomcat动静分离 动态页面与静态页面区别 静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源. 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变. 什么是动 ...

  9. nginx之动静分离(nginx与php不在同一台服务器)

    nginx实现动静分离(nginx与php不在同一个服务器) 使用wordpress-5.0.3-zh_CN.tar.gz做实验 Nginx服务器的配置: [root@app ~]# tar xf w ...

随机推荐

  1. cdoj31-饭卡(card) (01背包)

    http://acm.uestc.edu.cn/#/problem/show/31 饭卡(card) Time Limit: 3000/1000MS (Java/Others)     Memory ...

  2. [poj2104]kth-number(归并树求区间第k大)

    复杂度:$O(nlog^3n)$ #include<cstdio> #include<cstring> #include<algorithm> #include&l ...

  3. Python 生成MYSQL inser语句

    背景: 一般来说,navicat生成的insert已经够用了 如果说一张表有2,30个字段,每个字段还得一一对上,其实是很难的.所以抽空写了个小程序.用它完全不用担心字段对不上了.因为没有时间,需要手 ...

  4. www请求用到的Unescape

    //发送请求          WWW w = new WWW(url); //web服务器返回          yield return w;        if (!string.IsNullO ...

  5. Hibernate核心API

    ------------------------siwuxie095 (一)Configuration 1.一般情况 或: 加载核心配置文件:在 src 下找到名称为 Hibernate.cfg.xm ...

  6. LinuxSystemProgramming-vi

    Basic VI

  7. ofo开锁共享平台

    http://www.cnblogs.com/mengyu/p/7700980.html

  8. QT学习之多线程

    [为什么要用多线程?] 传统的图形用户界面应用程序都只有一个执行线程,并且一次只执行一个操作.如果用户从用户界面中调用一个比较耗时的操作,当该操作正在执行时,用户界面通常会冻结而不再响应.这个问题可以 ...

  9. mysql链接错误:2003 can't connect to mysql server on 10038

    出现这个错误原因是端口号不是3306.  打开D:\Program Files\MySQL\MySQL Server 5.5 \my.ini文件,当然还有其他的.ini的文件:   [client] ...

  10. 42 :809*x=800*x+9*x+1

    题目:809*x=800*x+9*x+1(去掉最后的1有解)其中x代表的两位数,8*x的结果为两位数,9*x的结果为3位数.求x代表的两位数,及809*x后的结果(两种方法实现) public cla ...