ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Nginx之http服务器(动静分离)+ rewrite

2021-08-15 12:34:51  阅读:150  来源: 互联网

标签:index http rewrite Nginx 正则 html location


 


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

 

标签:index,http,rewrite,Nginx,正则,html,location
来源: https://www.cnblogs.com/BlueStarWei/p/14555317.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有