• Nginx的try_files指令和命名location使用实例


    Nginx的配置语法灵活,可控制度非常高。在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率。

    下面是一个使用实例(螺壳网V0.3的配置):

    upstream tornado {
            server 127.0.0.1:8001;
    }
     
    server {
            server_name luokr.com;
            return 301 $scheme://www.luokr.com$request_uri;
    }
     
    server {
            listen 80;
            server_name www.luokr.com;
     
            root /var/www/www.luokr.com/V0.3/www;
            index index.html index.htm;
     
            try_files $uri @tornado;
     
            location @tornado {
                    proxy_pass_header Server;
                    proxy_set_header Host $http_host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Scheme $scheme;
     
                    proxy_pass http://tornado;
            }
    }

    可以在Github上查看螺壳网的源代码

    try_files指令

    语法:try_files file ... uri 或 try_files file ... = code
    默认值:无
    作用域:server location

    其作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。

    需要注意的是,只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误。命名的location也可以使用在最后一个参数中。与rewrite指令不同,如果回退URI不是命名的location那么$args不会自动保留,如果你想保留$args,则必须明确声明。

    location指令

    语法:location [=|~|~*|^~|@] /uri/ { … }
    默认值:无
    作用域:server

    location指令是用来为匹配的URI进行配置,URI即语法中的"/uri/",可以是字符串或正则表达式。但如果要使用正则表达式,则必须指定前缀。 [@] 即是命名location,一般只用于内部重定向请求。

  • 相关阅读:
    MYSQL数据库查看被锁状态以及解锁
    MongoDB命令
    代码重构
    笔试常见之C类型转换
    WeakReference(弱引用)(转)
    Linux ubuntu16.04下vim的安装与配置
    mysql Access denied for user root@localhost之错误解决方法(错误码:1045)
    mysql服务无法启动报错1067解决办法 (mysql启动错误1067)
    js的ajax封装
    windows下apache tomcat整合
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/8455051.html
Copyright © 2020-2023  润新知