概述

 Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项
 针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。
 在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式

实现动静分离的方式有三种:

  • 静态web服务放置在公网中
  • 静态web服务放置在代理服务器中
  • 静态web服务放置在内网的单独服务器上

常用的方案:在公网和 内网都提供静态页面处理的服务器

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次以上,但尽可能少重复

案例

说明:本案例(1)使用Nginx调度服务器做静态数据处理(2)使用内网中独立的Nginx服务器处理静态数据

1.使用Nginx调度处理静态数据(视频,图片,音乐等可视化数据),LAMP处理动态数据

(1)搭建LAMP主机

参考博客:http://www.cnblogs.com/zhichaoma/p/7487186.html

(2)配置Nginx调度服务器

搭建Nginx服务:参考博客:http://www.cnblogs.com/zhichaoma/p/7570210.html

在server{};段中加入以下代码

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

检查配置文件是否正确并启动

nginx -t
nginx

将静态数据文件拷贝到Nginx服务的网站根目录下

location / {
root html; //可以在这里指定指定根目录
index index.html index.htm;
  }

这里将数据默认存放在 nginx/html/ 下

(3)在LAMP服务器上创建一个 test.php测试文件

<?php
echo "Welcome to My site"."<br/>";
echo "<img src='1.jpg'>";
?>

test.php

使用客户端访问Nginx调度服务器的IP地址,Nginx调度服务器会将php的请求转交给LAMP服务器处理,而静态数据(这里是一张图片)会从Nginx调度服务器中去取

2.使用内网中独立的Nginx的服务器处理静态数据

在server{};段中加入以下代码

location ~ \.php$ {                                        #匹配以.php为结尾的动态页
  proxy_pass http://LAMP的IP地址(192.168.10.10); #proxy_xy 意思是代理交给谁
  } location ~ .*\.(gif|jpg|jpeg|bmp|swf)$ { #这段代码意思是任意网址以这5种格式为结尾就到192.168.10.20服务器寻找资源
proxy_pass http://处理静态数据的Nginx的服务器的IP地址(192.168.10.20);
  }

将静态数据文件拷贝到Nginx服务的网站根目录下,检查配置文件,启动服务,使用客户机访问验证

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

  1. Nginx动静分离实现

    Nginx动静分离实现: Nginx是一种轻量级,高性能,多进程的Web服务器,非常适合作为静态资源的服务器使用,而动态的访问操作可以使用稳定的Apache.Tomcat及IIS等来实现,这里就以Ng ...

  2. Nginx动静分离架构

    Nginx动静分离简单来说就将动态与静态资源分开,不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat,Res ...

  3. Nginx 动静分离与负载均衡的实现

    一.前提 企业中,随着用户的增长,数据量也几乎成几何增长,数据越来越大,随之也就出现了各种应用的瓶颈问题. 问题出现了,我们就得想办法解决,一般网站环境,均会使用LAMP或者LNMP,而我们对于网站环 ...

  4. Nginx动静分离架构&&HA-LB集群整合

    Nginx动静分离简单来说就将动态与静态资源分开,不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat,Res ...

  5. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  6. Nginx动静分离经典

    Nginx:安装nginx之前需要安装pcre包和zlib以支持重写,正则以及网页压缩等等]把所需的包下载到/usr/src下[根据自己的习惯,路径可以改变]1.首先安装pcre: cd /usr/s ...

  7. Nginx动静分离

    动静分离 Nginx动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路. ...

  8. Nginx动静分离知识及配置

    Nginx动静分离知识及配置,本质上与分离上传下载功能是相同功能,本质就是在文件服务器也是需要部署WEB应用的,只是在进行代理分离的时候分配到对应的文件服务器上去. 随着Nginx高性能Web服务器大 ...

  9. Nginx动静分离(Nginx+Tomcat)

    第一步:nginx构建 第二步:Tomcat构建 1.Tomcat基础点 (1)Tomcat 是基于java开发的web容器,用来发布java代码和jsp网页. (2)开发人员开发java web网站 ...

随机推荐

  1. C#获取指定IP地址的数据库所有数据库实例名

    /// <summary> /// 获取指定IP地址的数据库所有数据库实例名. /// </summary> /// <param name="ip" ...

  2. 快速导入导出Oracle数据demo(sqlldr、UTL_FILE)

    本文演示快速sqlldr导入.UTL_FILE导出Oracle表数据实例 表结构如下,演示数据约112万,可自行准备. create table MemberPointDemo ( MEMBERID ...

  3. HDU 5023线段树区间染色,统计区间内颜色个数

    这个也是一个线段树的模板 #include<iostream> #include<string.h> #include<algorithm> #include< ...

  4. UVA-10375 唯一分解定理

    #include<iostream> #include<string.h> #include<algorithm> #include<math.h> # ...

  5. codeforces#580 D. Kefa and Dishes(状压dp)

    题意:有n个菜,每个菜有个兴奋值,并且如果吃饭第i个菜立即吃第j个菜,那么兴奋值加ma[i][j],求吃m个菜的最大兴奋值,(n<=18) 分析:定义dp[status][last],statu ...

  6. 1060E Sergey and Subway(思维题,dfs)

    题意:给出一颗树,现在,给哪些距离为2的点对,加上一条边,问所有点对的距离和 题解:如果没有加入新的边,距离和就会等于每条边的贡献,由于是树,我们用点来代表点上面的边,对于每条边,它的贡献将是(子树大 ...

  7. 2017软工实践K班总结

    回首一学期的软工实践,从暑假开始陆续布置作业,经历个人.结对与团队等大小作业.也经历了不少同学被吓跑.第一周就退选的情况,能坚持下来的都是胜利者,至少你们有一颗愿意挑战的心.首先感谢助教谢涛付出的巨大 ...

  8. Mike and palindrome CodeForces - 798A

    题目链接 一个简单的题目,但是却很少有人可以一次AC,比如我就瞎写wa了一次... 写本博算个教训录吧. 题目给出一个字符串,让你严格的改变一个字符使改变后的字符串是一个回文串. 回文串不用解释了.不 ...

  9. 关于iframe页面里的重定向问题

    最近公司做的一个功能,使用了iframe,父页面内嵌子页面,里面的坑还挺多的,上次其实就遇到过,只不过今天在此描述一下. 请允许我画个草图: 外层大圈是父级页面,里层是子级页面,我们是在父级引用子级页 ...

  10. Python classmethod 修饰符

    描述 classmethod修饰符对应的函数不需要实例化,不需要self参数,但第一个参数需要是表示自身类的cls参数,可以调用类的属性,类的方法,实例化对象等. 语法 classmethod语法: ...