[转帖]nginx(三十四)root和alias指令辨析

nginx,三十四,root,alias,指令,辨析 · 浏览次数 : 0

小编点评

**一、案例一:简单** ```nginx $uri: /resource/href.html location: /resource -- 强调:location只能匹配uri,不能匹配参数 资源路径:/usr/share/nginx/html/resource/href.html 最终资源路径:是'root'指定的值'+'匹配对应location的'$uri'值 只有使用$request_uri才能获取'完整'的链接 **二、案例二:复杂** ```nginx $uri: '/v1/[\"location中\"]'test/mnt.html location: /v1/ alias: /usr/share/nginx/html/ 最终路径:'/usr/share/nginx/html/[\"实际\"]test/mnt.html location中映射的就是'alias'值 ``` **三、案例三:重复** ```nginx \"等价\" location /v2/ { root /usr/share/nginx/html; } ``` **四、案例四:正则测试** ```nginx  三    alias和root的小结 [1]. root与alias'主要区别'在于nginx如何'解释'location后面的uri [2] ```

正文

一    root指令

①   案例一  简单

  1. $uri'/resource/href.html'
  2. location:'/resource'
  3. -- 强调:location'只能'匹配uri,'不能'匹配'参数'
  4. 最终'资源'文件:/usr/share/nginx/html/resource/href.html
  5. 最终os的'资源路径':是'root'指定的值'+'匹配对应location的'$uri'
  6. ++++++++++ 只有使用$request_uri 才能获取'完整'的链接 ++++++++++
  7. if ($request_uri ~* ^/Handler/FileHandler.ashx\?([^_]+)(_[0-9]+)$) {
  8. set $m1 $1;
  9. rewrite ^/Handler/FileHandler.ashx /Handler/FileHandler.ashx?$m1? permanent;
  10. }
  11. 增强认知:'$request_uri'为什么不记录'锚点[#]'信息,因为'浏览器根本没''锚点'发送给服务器

 ②   案例二  复杂

二  alias

  1. 1. alias会把location后面'配置的路径'丢弃掉
  2. 2. 把当前匹配到的目录'指向'到指定的目录
  3. 3. 而 alias 正如其名,alias指定的路径是'location的别名',不管location的值怎么写,资源的'真实路径'都是 alias 指定的路径

nginx配置alias时加不加/

  1. alias时里面加/,外面就要加/;里面不加外面也不能加;alias代理的时整个完整路径,包括最后的/.
  2. location /user {
  3. alias /image/user;
  4. autoindex on;
  5. }
  6. #或者#
  7. location /user/ {
  8. alias /image/user/;
  9. autoindex on;
  10. }

①  普通

1)最简单

  1. $uri: /v1/mnt.html
  2. location:/v1/
  3. alias: /usr/share/nginx/html/
  4. 最终路径:/usr/share/nginx/html/mnt.html
  5. 解读:'location中'映射的就是'alias'

 2)稍微复杂

  1. $uri: '/v1/["location中"]'test/mnt.html
  2. location:/v1/
  3. alias: /usr/share/nginx/html/
  4. 最终路径:'/usr/share/nginx/html/["实际"]'test/mnt.html
  5. 解读:'location中'映射的就是'alias'数值
  6. 深刻理解:'alias''location'是一一'映射'的,alias是location的'别名'

②  重复

  1. ++++++++++++++ "等价" ++++++++++++++
  2. location /v2/ {
  3. root /usr/share/nginx/html;
  4. }

③   正则测试

三    alias和root的小结

  1. [1]. root与alias'主要区别'在于nginx如何'解释'location后面的uri
  2. [2]. 这会使两者分别以'不同的方式'将请求'映射''服务器资源文件'

在location中使用root和alias

 四    $document_root

  1. 1、'当前请求'下["一般uri是对应location下"]
  2. 2、由于'alias'作用域是location,如果location定义了'alias',则是alias
  3. 备注:如果'alias''root'同一作用域同时存在,'谁再后'谁生效
  4. 3、如果'location'都没有定义'root''alias',则继承'root',是'父'root的值
  5. 4、如果'location定义root',则是'覆盖父root',

①  测试

说明:揉和到一个'配置中'测试

②  测试1

③  测试2

④  测试3

与[转帖]nginx(三十四)root和alias指令辨析相似的内容:

[转帖]nginx(三十四)root和alias指令辨析

一 root指令 ① 案例一 简单 $uri:'/resource/href.html' location:'/resource' -- 强调:location'只能'匹配uri,'不能'匹配'参数' 最终'资源'文件:/usr/share/nginx/html/resource/href.html

[转帖]nginx(三十二)rewrite模块

一 官方rewrite模块 ① 模块涉及的指令 ② 基本简介 rewrite模块会根据'PCRE正则'匹配'重写URI' pcre下载地址 pcretest测试正则表达式 ③ break 疑惑点: 结束'该作用域'下剩余的指令,还是'只是该rewrite模块的'指令? 1)配置demo 2)不带参数

[转帖]Nginx(四)负载均衡

一 nginx目录的说明 1 nginx/ 3 |-- client_body_temp 4 |-- conf #这是Nginx所有配置文件的目录,极其重要 5 | |-- fastcgi.conf 'fastcgi相关参数的配置文件' 6 | |-- fastcgi.conf.default #f

[转帖]nginx限速

https://www.cnblogs.com/fengzi7314/p/16541440.html 第一步,先创建限制的规则,我这里直接在nginx默认的配置文件目录下配置,如果想自定义,需要在主配置文件添加include xx/xxx/xxx/*.conf配置 [root@node5 nginx

[转帖]Nginx支持WebSocket反向代理

https://www.cnblogs.com/zhengchunyuan/p/12923692.html WebSocket是目前比较成熟的技术了,WebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为HTML5的一部分,WebSocket相较于原来开发这类

[转帖]Nginx内置变量以及日志格式变量参数详解

补充 $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为空字符串 $uri #请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$reques

[转帖]nginx proxy_pass keepalive

Syntax: keepalive connections; Default: — Context: upstream This directive appeared in version 1.1.4. Activates the cache for connections to upstream

[转帖]Nginx超时timeout 设置

Nginx 超时配置,连接时间过长直接关闭连接,显示timeout http { #每个 TCP 连接最多可以保持多长时间 keepalive_timeout 60; #客户端向服务端发送一个完整的 request header client_header_timeout 10; #客户端发送服务端

[转帖]nginx反向代理时保持长连接

https://www.cnblogs.com/liufarui/p/11075630.html ·【场景描述】 HTTP1.1之后,HTTP协议支持持久连接,也就是长连接,优点在于在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。 如果我们使用了nginx去作为反

[转帖]Nginx报错404,由于请求处理时间过长

问题复现 近期部门内部有一个应用由于数据量过于庞大,或者说sql优化性能问题,导致查询全量数据时老报错nginx404,后来查看浏览器timing信息,发现其竟然时常达到可怕的2分钟十秒,抛去解决sql优化问题,这里从Nginx端的配置来说如何解决这类问题! 存在的问题 服务器处理请求时间过长,导致