当前位置:   article > 正文

nginx location中uri的截取的实现方法_nginx location获取uri的第一部分

nginx location获取uri的第一部分

location 中的 root 和 alias

  • root 指令只是将搜索的根设置为 root 设定的目录,即不会截断 uri,而是使用原始 uri 跳转该目录下查找文件
  • aias 指令则会截断匹配的 uri,然后使用 alias 设定的路径加上剩余的 uri 作为子路径进行查找

location 中的 proxy_pass 的 uri

如果 proxy_pass 的 url 不带 uri

  • 如果尾部是"/",则会截断匹配的uri
  • 如果尾部不是"/",则不会截断匹配的uri

如果proxy_pass的url带uri,则会截断匹配的uri

Examples

location中的 root

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

root@pts/1 $ ls -ld /data/web/lctest*|awk '{print $NF}'

/data/web/lctest

/data/web/lctest2

/data/web/lctest3

/data/web/lctest4

location /lctest {

  root /data/web/;

}

location /lctest2/ {

  root /data/web/;

}

location /lctest3 {

  root /data/web;

}

location /lctest4/ {

  root /data/web;

}

curl 测试结果如下

备注: 浏览器输入的时候最后面不添加 / , 会自动补上,但是curl 不行

1

2

3

4

5

6

7

8

9

10

11

12

13

14

root@pts/1 $ curl http://tapi.xxxx.com/lctest/

hello world

root@pts/1 $ curl http://tapi.xxxx.com/lctest2/

hello world

2

root@pts/1 $ curl http://tapi.xxxx.com/lctest3/

3

hello world

root@pts/1 $ curl http://tapi.xxxx.com/lctest4/

hello world

4

location alias

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

location /lctest5 {

  alias /data/web/;

}

location /lctest6/ {

  alias /data/web/;

}

location /lctest7 {

  alias /data/web;

}

## 403 /data/web forbidden

location /lctest8/ {

  alias /data/web;

}

curl 测试结果如下

1

2

3

4

5

6

7

8

9

10

11

12

13

curl 'http://tapi.kaishustory.com/lctest5/'

curl 'http://tapi.kaishustory.com/lctest6/'

curl 'http://tapi.kaishustory.com/lctest7/'

结果都是 /data/web/index.html的输出

root@pts/1 $ curl 'http://tapi.kaishustory.com/lctest8/'

<head>403 Forbidden</title></head>

"white">

403 Forbidden<

/h1></center>

nginx<
/center>

</body>

</html>

location proxy_pass

1

2

3

4

5

6

7

8

9

#--------proxy_pass配置---------------------

location /t1/ { proxy_pass http://servers; }  #正常,不截断

location /t2/ { proxy_pass http://servers/; }  #正常,截断

location /t3 { proxy_pass http://servers; }  #正常,不截断

location /t4 { proxy_pass http://servers/; }  #正常,截断

location /t5/ { proxy_pass http://servers/test/; }  #正常,截断

location /t6/ { proxy_pass http://servers/test; }  #缺"/",截断

location /t7 { proxy_pass http://servers/test/; }  #含"//",截断

location /t8 { proxy_pass http://servers/test; }  #正常,截断

测试脚本

1

2

3

4

5

6

for i in $(seq 8)

do

  url=http://tapi.xxxx.com/t$i/doc/index.html

  echo "-----------$url-----------"

  curl url

done

测试结果

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

----------http://tapi.xxxx.com/t1/doc/index.html------------

/t1/doc/index.html

----------http://tapi.xxxx.com/t2/doc/index.html------------

/doc/index.html

----------http://tapi.xxxx.com/t3/doc/index.html------------

/t3/doc/index.html

----------http://tapi.xxxx.com/t4/doc/index.html------------

/doc/index.html

----------http://tapi.xxxx.com/t5/doc/index.html------------

/test/doc/index.html

----------http://tapi.xxxx.com/t6/doc/index.html------------

/testdoc/index.html

----------http://tapi.xxxx.com/t7/doc/index.html------------

/test//doc/index.html

----------http://tapi.xxxx.com/t8/doc/index.html------------

/test/doc/index.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/860609
推荐阅读
相关标签
  

闽ICP备14008679号