• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    nginx location中uri的截取的实现方法

    说明:

    location 中的 root 和 alias

    location 中的 proxy_pass 的 uri

    如果 proxy_pass 的 url 不带 uri

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

    Examples

    location中的 root

    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 不行

    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

    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 测试结果如下

    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/'
    <html>
    <head><title>403 Forbidden</title></head>
    <body bgcolor="white">
    <center><h1>403 Forbidden</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
    
    

    location proxy_pass

    #--------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; }  #正常,截断
    

    测试脚本

    for i in $(seq 8)
    do
      url=http://tapi.xxxx.com/t$i/doc/index.html
      echo "-----------$url-----------"
      curl url
    done
    

    测试结果

    ----------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
    
    

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    上一篇:在Linux服务器和windows系统之间上传与下载文件的方法
    下一篇:Nginx Location指令URI匹配规则详解小结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    nginx location中uri的截取的实现方法 nginx,location,中,uri,的,截,