zoukankan      html  css  js  c++  java
  • 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,一般只用于内部重定向请求。

  • 相关阅读:
    【bzoj2588】Count on a tree
    【bzoj4205】卡牌配对
    【bzoj1502】月下柠檬树
    【learning】快速沃尔什变换FWT
    【bzoj3672】购票
    bzoj1402:[HAOI2008]硬币购物
    bzoj1090:[SCOI2003]字符串折叠
    bzoj1260[CQOI2007]涂色paint
    2016.08.07计算几何总结测试day2
    2016.08.06计算几何总结测试day1
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/8455051.html
Copyright © 2011-2022 走看看