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; }