• Nginx location


    location 作用

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


    location 语法

    location 使用的语法为:

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

    语法各部分含义:

    location [ = | ~ | ~* | ^~ | @ ] URI { ... }
    指令 匹配标识 匹配的网站网址 匹配URI后要执行的配置段

    每个匹配标识的作用:

    匹配标识 作用
    ~* 正则匹配,不区分大小写
    ~ 正则匹配,区分大小写
    ^~ 优先匹配常规字符串,不使用正则匹配
    = 精确匹配,比如,如果请求“/”出现频繁,定义“location = /”可以提高这些请求的处理速度
    @ 定义命名路径,用在请求重定向中

    location 示例

    location = / {                         
        [ configuration A ]                # 当用户请求 http://www.abc.com/ 时执行配置A     
    }
    location / {
        [ configuration B ]                # 当用户请求 http://www.abc.com/ 时执行配置B
    }
    location /documents {
        [ configuration C ]                # 当用户请求 http://www.abc.com/documents/document.html 时执行配置C
    }
    location ^~ /images/ {
        [ configuration D ]                # 当用户请求 http://www.abc.com/images/1.gif 时执行配置D
    }
    location ~* .(gif|jpg|jpeg)$ {
        [ configuration E ]                # 当用户请求 http://www.abc.com/documents/1.jpg 时执行配置E
    }
    

    location 匹配实战

    虚拟主机配置:

    server {
        listen       80;
        server_name  www.abc.com abc.com;
        root    html/www;
    
        location / {                           # " / " 表示所有 location 都不能匹配后才匹配这个
            return 401;                        # 当用户请求 http://www.abc.com/index.html 时返回 401
        }
    
        location = / {                         # " = / " 表示精确匹配
            return 402;                        # 当用户请求 http://www.abc.com/ 时返回 402
        }
    
        location /documents/ {                 # " /documents/ " 表示匹配常规字符,如果有正则,则优先匹配正则
            return 403;                        # 当用户请求 http://www.abc.com/documents/document.html 时返回 403
        }
    
        location ^~ /images/ {                 # " ^~ /images/ " 表示匹配常规字符串,不做正则匹配检查
            return 404;                        # 当用户请求 http://www.abc.com/images/1.gif 时返回 404
        }
    
        location ~* .(gif|jpg|jpeg)$ {        # " ~* .(gif|jpg|jpeg)$ " 表示正则匹配
            return 500;                        # 当用户请求 http://www.abc.com/documents/1.jpg 时返回 500
        }
    }
    

    实验结果:

    curl -s -o /dev/null -I -w "%{http_code}
    " http://www.abc.com/index.html
    401
    curl -s -o /dev/null -I -w "%{http_code}
    " http://www.abc.com/
    402
    curl -s -o /dev/null -I -w "%{http_code}
    " http://www.abc.com/documents/document.html
    403
    curl -s -o /dev/null -I -w "%{http_code}
    " http://www.abc.com/images/1.gif
    404
    curl -s -o /dev/null -I -w "%{http_code}
    " http://www.abc.com/documents/1.jpg
    500
    

    通过以上多个 location 的匹配可以看出匹配的优先顺序。


    参考资料

    http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_core_module.html#location

  • 相关阅读:
    tkinter_战队数据查询系统
    python_tkinter组件
    python_tkinter基本属性
    python_tkinter组件摆放方式
    python_推导式
    python_装饰器
    python_模块1
    python_生成随机验证码
    linux基础_使用指令3
    linux部署django项目流程(全)
  • 原文地址:https://www.cnblogs.com/wushuaishuai/p/9359561.html
Copyright © 2020-2023  润新知