zoukankan      html  css  js  c++  java
  • 《Nginx

    一:Location 作用

      - location 定位 ,也就是可以通过不同URL进行定位,可以很大的增加它配置的灵活性。

    二:相关变量

    • 示例:
          http://192.168.27.27/xxxx 
              $request_uri  = /xxxx
      
          http://baidu.com/icon.png
              $request_uri  = /icon.png
      可以配置你的 Nginx 查看具体的 $request_uri 的值
      location /requesturi {
      add_header Content-type 'text/html; charset=utf-8';
      return 200 $request_uri;
      }

    三:location的匹配规则

      - 可以看到,匹配路由的话更多是匹配 $request_uri 的路径

      - Nginx 可以在 location 中支持我们如下的匹配规则

         开头表示精确匹配

        ^~ 开头,注意这不是一个正则表达式--它的目的是优于正则表达式的匹配。如果该location是最佳匹配,则不再进行正则表达式检测。

        ~  开头表示区分大小写的正则匹配;

        ~* 开头表示不区分大小写的正则匹配

        / 通用匹配, 如果没有其它匹配,任何请求都会匹配到

       - 具体用法

      • 
        
        location = /demo/ {
            在以等号为精确匹配时,$request_uri 必须等于 /demo/ 时才能匹配,不过这也印证了精确匹配这个词汇,准确,分毫不差。
        }

        location ^~ /demo/ {   首要要注意的是这不是一个正则表达式的匹配,它的目的是优于正则表达式的匹配,可以匹配到满足'/demo/*'的所有url。 }
        location ~ .php$ {    好吧,这就是一个正则匹配了,上面表示匹配到结尾为 .php 的 url 路径。 }
        location ~* .php$ {    这个看起来和上面那个也没什么区别,有什么不同呢?不同是这个匹配开头不会区分大小写。注意了~!是开头 }

    四:  匹配优先级

      - [精确匹配 =]  >  [全匹配^~]  >  [正则匹配]  >  [进行通用匹配]

      - 在实际应用中的推荐配置

      • 所以实际使用中,个人觉得至少有三个匹配规则定义,如下:
        #直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。
        #这里是直接转发给后端应用服务器了,也可以是一个静态首页
        # 第一个必选规则
        location = / {
            proxy_pass http://tomcat:8080/index
        }
        # 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项
        # 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
        location ^~ /static/ {
            root /webroot/static/;
        }
        location ~* .(gif|jpg|jpeg|png|css|js|ico)$ {
            root /webroot/res/;
        }
        #第三个规则就是通用规则,用来转发动态请求到后端应用服务器
        #非静态文件请求就默认是动态请求,自己根据实际把握
        #毕竟目前的一些框架的流行,带.php,.jsp后缀的情况很少了
        location / {
            proxy_pass http://tomcat:8080/
        }

          

  • 相关阅读:
    初识分布式计算:从MapReduce到Yarn&Fuxi
    日志的艺术(The art of logging)
    关于负载均衡的一切:总结与思考
    打印中文dict list的各种姿势
    不想再被鄙视?那就看进来! 一文搞懂Python2字符编码
    什么是分布式系统,如何学习分布式系统
    再论分布式事务:从理论到实践
    从银行转账失败到分布式事务:总结与思考
    git命令
    IntelliJ idea 中使用Git
  • 原文地址:https://www.cnblogs.com/25-lH/p/8616165.html
Copyright © 2011-2022 走看看