zoukankan      html  css  js  c++  java
  • Nginx location配置

    作用

    location指令的作用是根据用户请求的URI来执行不同的应用,其实就是根据用户请求的网站地址URI进行匹配,匹配成功即进行相关的操作。

    语法

    location [ = | ~ | ~* |^~ ] uri {
        ...
    }

    上面就是location的语法,上述语法中uri部分是关键,这个uri可以是普通的字符串地址路径,或者是正则表达式,匹配成功后则执行大括号里的相关指令。使用正则表达式的时候前面还可以有~~*等特殊字符。

    ~区分大小写,~*不区分大小写,还可以加!对匹配结果取反,此外,^~的作用是在进行常规的字符串匹配检查之后,不做正则表达式的检查,即如果最明确的那个字符串匹配的location有此前缀,那么就不进行正则表达式的检查。

    示例

    location = /{
        [configuration A]
    }
    location / {
        [configuration B]
    }
    location /documents/ {
        [configuration C]
    }
    location ^~ /images/ {
        [configuration D]
    }
    location ~* .(gif|jpg|jpeg)$ {
        [configuration E]
    }

    上述location配置中,当用户请求/时,将匹配configuration A,当用户请求/index.html时,将匹配configuration B,当用户匹配/documents/document.html时,将匹配configuration C,当用户请求/images/1.gif时,将匹配configuration D,当用户请求/documents/1.jpg时,将匹配configuration E

    实战

    配置location

    server {
        listen 80;
        server_name test.com; #测试的域名
    
        location / {
            return 401;
        }
    
        location = / {
            return 402;
        }
    
        location /documents/ {
            return 403;
        }
    
        location ^~ /images/ {
            return 404;
        }
    
        location ~* .(gif|jpg|jpeg)$ {
            return 500;
        }
    }

    重启nginx

    ./sbin/nginx -t 
    ./sbin/nginx -s reload 

    添加Host解析

    123.206.176.xxx       test.com #填你的真实ip

    测试

    (1) 为空或/

    这里写图片描述

    =为精确匹配,优先级最高,不论放置的顺序如何,它都将优先被匹配并执行

    (2)/index.html

    这里写图片描述

    /为默认匹配,即如果没有匹配上其他的location,则最后匹配”默认匹配”部分

    (3)/documents/documents.html

    这里写图片描述

    此部分为路径匹配,即匹配了/documents/,注意后面的/documents/1.gif,这表示没有匹配此处的location,而是匹配了以.gif结尾的location

    (4)/images/1.gif

    这里写图片描述

    此部分为路径匹配,但是前面加了^~,所以优先匹配路径,匹配到了就没有匹配以.gif结尾的location

    (6)/documents/1.gif

    这里写图片描述

    此部分匹配了1.gif,属于扩展名匹配,虽然有/documents/,但还是先匹配了扩展名

    在重新体会一下默认匹配的含义,如果都没有匹配到,就匹配默认匹配吗,也就是/

    这里写图片描述

  • 相关阅读:
    Flutter 开发环境搭建
    swift 如何控制view的显示与隐藏
    TextView textSize 文字大小
    Android项目增加混淆
    Android EditText 无法换行
    Android 6.0 新特性 整理 资料来自网络
    java线程中的sleep/wait/notify/yield/interrupt方法 整理
    java 抽象类与接口的区别 整理
    android 系统架构
    android handler工作原理
  • 原文地址:https://www.cnblogs.com/cnsec/p/13406997.html
Copyright © 2011-2022 走看看