页面

分类

nginx location匹配和basic_auth

2014/3/20, by wingfire ; 分类: 计算机技术; 0 comments

location匹配命令

~      #波浪线表示执行一个正则匹配,区分大小写
~*    #表示执行一个正则匹配,不区分大小写
^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
=      #进行普通字符精确匹配
@     #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
  1. Directives with the = prefix that match the query exactly. If found, searching stops.
  2. All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.
  3. Regular expressions, in order of definition in the configuration file.
  4. If #3 yielded a match, that result is used. Else the match from #2 is used.

  5. =前缀的指令严格匹配这个查询。如果找到,停止搜索。

  6. 所有剩下的常规字符串,最长的匹配。如果这个匹配使用^〜前缀,搜索停止。
  7. 正则表达式,在配置文件中定义的顺序。
  8. 如果第3条规则产生匹配的话,结果被使用。否则,如同从第2条规则被使用。

    @location 例子

    error_page 404 = @fetch;

    location @fetch{ proxy_pass http://fetch; }

基于网站的认证:

auth_basic "Prompt";
auth_basic_user_file <path to nginx passwd file>

针对目录的认证,在一个单独的location中,并且在该location中嵌套一个子location,否则子目录中的文件会被下载。auth_basic在嵌套的location之后。

例子:

location ~ ^/admin/.* {
    location ~ \.php$ {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    auth_basic "auth";
    auth_basic_user_file /usr/local/nginx/conf/vhost/auth/admin.pass;
}

添加评论:

 
 the email would not displayed
 

您可以使用 Markdown 语法。

您必须启用浏览器的 JavaScript 功能才能发表评论。