zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    POJ-2253 Frogger dijsktra查找间隔最小的路径
    LightOJ-1282 Leading and Trailing 模算数 快速幂 对数的用法
    LightOJ-1341 Aladdin and the Flying Carpet 分解质因数(注意对大素数的优化)
    UVA-10200 Prime Time 素数(注意除法精度)
    POJ-2142 The Balance 扩展欧几里德(+绝对值和最小化)
    ArchLinux 音乐播放客户端ncmpcpp和服务端mpd的配置
    [笔记-统计学习方法]感知机模型(perceptron) 原理与实现
    [Bug]Python3.x AttributeError: libtest.so: undefined symbol: fact
    [Bug]C++ XXX:undefined reference to "xxx"
    ip代理池的爬虫编写、验证和维护
  • 原文地址:https://www.cnblogs.com/BlueStarWei/p/14555317.html
Copyright © 2011-2022 走看看