zoukankan      html  css  js  c++  java
  • ⑥nginx location

    nginx程序区域模块 - location

    功能:匹配不同的uri信息,做出相应处理
    Syntax:	location [ = | ~ | ~* | ^~ ] uri { ... }       语法结构
                           匹配          uri  执行什么动作
    	    awk       '模式{动作}'
    Default:	—
    Context:server, location   --- 可以配置在什么区域中
    =:		精确匹配     			= /oldboy   www.oldboy.com  /oldboy
    ~:		模糊匹配(区分大小写)
    ~*:	模糊匹配(不区分大小写)
    ^~:     优先匹配 不识别uri信息中正则符号
     /:         默认匹配
    
    如何应用:
    
        location = / {                        01
            return  301;
        }
        
        location / {                          05   默认匹配
            return  302;
        }
        
        location /documents/ {                04
            return  404;
        }
        
        location ^~ /images/ {                02
            return  502;
        }
        
        location ~* .(gif|jpg|jpeg)$ {       03
            return  520;
        }
    
    样例:测试 ~ 和 ~*
    
        location ~ /test/ {
            return  301;
        }
        location ~* /test/ {
            return  302;
        }
    
    规范站点目录结构信息:
    
        [root@web01 conf.d]# cat www.conf 
        server {
            listen       80;
            server_name  www.oldboy.com;
            location ~* .jpg$ {
                root  /html/www/jpg;
            }
            location ~* .png$ {
                root /html/www/png;
            }
            location / {
                root  /html;
                index index.html;
            }
        }
    

    location /web/ /web 的区别

    server {
            listen 80;
            server_name proxy_cache.yangyijing.cn;
            location /web {
                    proxy_pass http://cache;
                    proxy_cache code_cache;
                    include proxy_params;
            }
    }
    

    /web/ 的功能是精准匹配
    /web 的功能是模糊匹配 可以匹配/webbbbsf 就是/web* 任意字符

    proxy_pass有无“/”的四种区别探究

    访问地址都是以:http://www.wandouduoduo.com/wddd/index.html 为例。请求都匹配目录/wddd/
    第一种:加"/"

    location  /wddd/ {
        proxy_pass  http://127.0.0.1:8080/;
    }
    

    测试结果,请求被代理跳转到:http://127.0.0.1:8080/index.html
    第二种: 不加"/"

    location  /wddd/ {        
        proxy_pass http://127.0.0.1:8080;
    }
    

    测试结果,请求被代理跳转到:http://127.0.0.1:8080/wddd/index.html
    第三种: 增加目录加"/"

    location  /wddd/ {        
        proxy_pass http://127.0.0.1:8080/sun/;
    }
    

    测试结果,请求被代理跳转到:http://127.0.0.1:8080/sun/index.html
    第四种:增加目录不加"/"

    location  /wddd/ {
        proxy_pass http://127.0.0.1:8080/sun;
    }
    

    测试结果,请求被代理跳转到:http://127.0.0.1:8080/sun/index.html

    总结

    location目录后加"/",只能匹配目录,不加“/”不仅可以匹配目录还对目录进行模糊匹配。而proxy_pass无论加不加“/”,代理跳转地址都直接拼接。为了加深大家印象可以用下面的配置实验测试下:

    server {   
      listen       80;   
      server_name  localhost;   # http://localhost/wddd01/xxx -> http://localhost:8080/wddd01/xxx
    
      location /wddd01/ {           
        proxy_pass http://localhost:8080;   
      }
    
      # http://localhost/wddd02/xxx -> http://localhost:8080/xxx   
      location /wddd02/ {           
        proxy_pass http://localhost:8080/;    
      }
    
      # http://localhost/wddd03/xxx -> http://localhost:8080/wddd03*/xxx   
      location /wddd03 {           
        proxy_pass http://localhost:8080;   
      }
    
      # http://localhost/wddd04/xxx -> http://localhost:8080//xxx,请注意这里的双斜线,好好分析一下。
      location /wddd04 {           
        proxy_pass http://localhost:8080/;   
      }
    
      # http://localhost/wddd05/xxx -> http://localhost:8080/hahaxxx,请注意这里的haha和xxx之间没有斜杠,分析一下原因。
      location /wddd05/ {           
        proxy_pass http://localhost:8080/haha;    
      }
    
      # http://localhost/api6/xxx -> http://localhost:8080/haha/xxx   
      location /wddd06/ {           
        proxy_pass http://localhost:8080/haha/;   
      }
    
      # http://localhost/wddd07/xxx -> http://localhost:8080/haha/xxx   
      location /wddd07 {           
        proxy_pass http://localhost:8080/haha;   
      } 
            
      # http://localhost/wddd08/xxx -> http://localhost:8080/haha//xxx,请注意这里的双斜杠。
      location /wddd08 {           
        proxy_pass http://localhost:8080/haha/;   
      }
    }
    
  • 相关阅读:
    jsp三种注释方法
    MyEclipse 2015优化技巧
    查看是否安装jdk及路径
    hibernate中save()、get()、load()、update()、saveorupdate()、merge()等方法
    MyEclipse更改项目名web发布名字不改问题
    try-catch-finally try中有rerun 是否执行finally
    使用HTML制作网页
    rs(0)与rs("字段名")的区别
    金蝶K3 wise 插件二次开发与配置
    初识触发器(2)
  • 原文地址:https://www.cnblogs.com/yangtao416/p/14618880.html
Copyright © 2011-2022 走看看