zoukankan      html  css  js  c++  java
  • nginx root&alias 文件路径配置

      nginx 指定文件路径有两种方式 root 和 alias,root 与 alias 主要区别在于 nginx 如何解释 location 后面的 uri,这会使两者分别以不同的方式将请求映射到
    服务器文件上。

    [root]
    语法:root path
    默认值:root html
    配置段:http、server、location、if
    [alias]
    语法:alias path
    配置段:location

    实例:  

    location ~ ^/weblogs/ {
        root /data/weblogs/www.ysl.com;
        autoindex on;
        auth_basic
        "Restricted";
        auth_basic_user_file passwd/weblogs;
    }

      如果一个请求的 URI 是/weblogs/httplogs/www.ysl.com-access.log 时,web 服务器将会返回服务器上的/data/weblogs/www.ysl.com/weblogs/httplogs/www.ysl.com-access.log 的文件。[info]root 会根据完整的 URI 请求来映射,也就是/path/uri。[/info]因此,前面的请求映射为 path/weblogs/httplogs/www.ysl.com-access.log。

    location ^~ /binapp/ {
        limit_conn limit 4;
        limit_rate 200k;
        internal;
        alias /data/statics/bin/apps/;
    }

      alias 会把 location 后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。如果一个请求的 URI 是/binapp/a.ysl.com/favicon 时,web 服务器将会返回服务器上的/data/statics/bin/apps/a.ysl.com/favicon 的文件

    注意:

      1. 使用 alias 时,目录名后面一定要加”/”。
      2. alias 可以指定任何名称。
      3. alias 在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
      4. alias 只能位于 location 块中

      ngx_http_core_module 模块在处理请求时,会有大量的变量,这些变量可以通过访问日志来记录下来,也可以用于其它nginx 模块。在我们对请求做策略如改写等等都会使用到一些变量,顺便对 ngx_http_core_module 模块提供的变量总结了下,如下所示:

    参数名称 注释
    $arg_PARAMETER HTTP 请求中某个参数的值,如/index.php?site=www.ysl.com,可以用$arg_site 取得 www.ysl.com 这个值
    $args HTTP 请求中的完整参数。例如,在请求/index.php?width=400&height=200 中,$args 表示字符串 width=400&height=200
    $binary_remote_addr 二进制格式的客户端地址。例如:x0AxE0Bx0E
    $body_bytes_sent 表示在向客户端发送的 http 响应中,包体部分的字节数
    $content_length 表示客户端请求头部中的 Content-Length 字段
    $content_type 表示客户端请求头部中的 Content-Type 字段
    $cookie_COOKIE 表示在客户端请求头部中的 cookie 字段
    $document_root 表示当前请求所使用的 root 配置项的值
    $uri 表示当前请求的 URI,不带任何参数
    $document_uri 与$uri 含义相同
    $request_uri 表示客户端发来的原始请求 URI,带完整的参数。$uri 和$document_uri 未必是用户的
    原始请求,在内部重定向后可能是重定向后的 URI,而$request_uri 永远不会改变,始终是客户端的原始 URI.
    $host 表示客户端请求头部中的 Host 字段。如果 Host 字段不存在,则以实际处理的 server
    (虚拟主机)名称代替。如果 Host 字段中带有端口,如 IP:PORT,那么$host 是去掉端口的,它的值为 IP。$host
    是全小写的。这些特性与 http_HEADER 中的 http_host 不同,http_host 只取出 Host 头部对应的值。
    $hostname 表示 Nginx 所在机器的名称,与 gethostbyname 调用返回的值相同
    $http_HEADER 表示当前 HTTP 请求中相应头部的值。HEADER 名称全小写。例如,示请求中 Host 头部
    对应的值 用 $http_host 表
    $sent_http_HEADER 表示返回客户端的 HTTP 响应中相应头部的值。HEADER 名称全小写。例如,用 $sent_
    http_content_type 表示响应中 Content-Type 头部对应的值
    $is_args 表示请求中的 URI 是否带参数,如果带参数,$is_args 值为 ?,如果不带参数,则是
    空字符串
    $limit_rate 表示当前连接的限速是多少,0 表示无限速
    $nginx_version 表示当前 Nginx 的版本号
    $query_string 请求 URI 中的参数,与 $args 相同,然而 $query_string 是只读的不会改变
    $remote_addr 表示客户端的地址
  • 相关阅读:
    javascript和C#比较
    前端模块管理器简介
    javascript中的splice方法介绍&示例
    javascript中数组揭秘
    17款code review工具
    IIS ip访问限制插件
    iis 限制动态IP地址访问次数
    AWS云使用100条宝贵经验分享
    C# 开源框架(整理)
    如何获取Azure AD tenant的tenant Id?
  • 原文地址:https://www.cnblogs.com/senlinyang/p/9437525.html
Copyright © 2011-2022 走看看