Nginx之http服务器(动静分离)+ rewrite
Posted blue星空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx之http服务器(动静分离)+ rewrite相关的知识,希望对你有一定的参考价值。
http服务器(动静分离)
nginx作为http服务器,可以用于存放静态资源(比如css、图片、音频等),实现web服务的动静分离。(tomcat等作为动态资源服务器。静态资源访问Nginx,其它访问tomcat)。
配置流程
-
从原项目包种移除static静态资源包的文件;
-
在/usr/nginx目录下创建resources文件夹
-
将静态资源包放入resources中
-
修改配置文件nginx.conf
location ~*\\.(css|js|html)$ { root resources; #指向静态资源 index index.html #配置缓存有效天数 expires 7d; } location ~\\*.(jpg|png|mp3|mp4)$ { root resources; index index.html #有效天数 expires 20d; }
location基本语法:
location[ = | ~ | ~* | ^~] url{ }
-
= 精确匹配
-
~ 区分大小写的正则匹配
-
~* 不区分大小写的正则匹配
-
^~ 以某个常规字符串开头的匹配
-
如果有url包含正则表达式,不需要有~开头标识
补充概念:
-
动静分离:就是将css、js、jpg、音频等静态资源和jsp等动态资源分开处理,以提高服务器响应速度,提高性能。
rewrite/地址重定向
能够使用rewrite指令的字段包括:http、server、location。
Rewrite语法
rewrite 正则表达式 定向后的位置 [模式]
例子:
location /ecshop { index index.php; rewrite goods-([\\d]+)\\.html$ /ecshop/goods.php?id=$1; rewrite category-(\\d+)-b(\\d+)\\.html /ecshop/category.php?id=$1&brand=$2 permanent; }
server { listen 80; server_name abc.com www.abc.com; if ( $host != \'www.abc.com\' ) { rewrite ^/(.*) http://www.abc.com/$1 permanent; } location / { root /data/www/www; index index.html index.htm; } }
注意:用url重写时, 正则里如果有”{}”,正则要用双引号包起来。
模式:
last
|
本条规则匹配完成后继续向下匹配新的location URI规则
|
break
|
本条规则匹配完成后终止,不在匹配任何规则
|
redirect
|
返回302临时重定向
|
permanent
|
返回301永久重定向
|
重写中用到的指令:
- if (条件) {} 设定条件,再进行重写
语法格式 if 空格 (条件) { 重写模式 } 1: “=”来判断相等, 用于字符串比较 2: “~” 用正则来匹配(此处的正则区分大小写) ~* 不区分大小写的正则 3: -f -d -e来判断是否为文件,为目录,是否存在. 例子:if (!-e $document_root$fastcgi_script_name) { #注: 此处还要加break rewrite ^.*$ /404.html break; }
- set #设置变量
if ($http_user_agent ~* msie) { set $isie 1; } if ($fastcgi_script_name = ie.html) { set $isie 0; } if ($isie = 1) { rewrite ^.*$ ie.html; }
- return #返回状态码
if ($remote_addr = 192.168.1.100) { return 403; }
- break #跳出rewrite
if ($http_user_agent ~ MSIE) { rewrite ^.*$ /ie.htm; #不break会循环重定向 break; }
更多内容,请访问:http://www.cnblogs.com/BlueStarWei
以上是关于Nginx之http服务器(动静分离)+ rewrite的主要内容,如果未能解决你的问题,请参考以下文章