美文网首页
Nginx(二)Nginx使用

Nginx(二)Nginx使用

作者: 7ColorLotus | 来源:发表于2020-06-08 14:58 被阅读0次
    • 日志配置和切割
      1. 编写自动分割Nginx日志脚本: nginxLogRotate.sh
        #!/bin/bash
        LOGS_PATH=/usr/local/nginx/logs
        YESTERDAY=$(date -d "yesterday" +%Y%m%d%H%M)
        mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
        mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log
        kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
        
      2. 设置Linux定时任务(crontab)
        0 0 * * * root /usr/local/nginx/logs/nginxLogRotate.sh
        
      3. linux下crontab常用命令
           查看定时状态:/etc/init.d/crond status
           启动定时:/etc/init.d/crond start
           /etc/init.d/rsyslog status
           /etc/init.d/rsyslog start
        
    • location配置
      1. location规则:
        1)精准匹配:location=/
        2)非正则匹配:location ^~ /static/
        3)正则匹配:location ~ *.(gif|png|css|js)$
    • 虚拟主机(server)
      1. 服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,同一台主机上的虚拟主机之间是完全独立的。
      2. 配置方式
        1)基于域名的虚拟主机
        2)基于ip的虚拟主机
        3)基于端口的虚拟主机
      3. 可以将虚拟主机配置独立出一个文件来,在nginx.conf中使用include 包含独立文件
      4. 示例:
        server{
           #监听端口
           listen 80
           #监听域名abc.com
           server_name abc.com
           location /{
               #跟目录路径
               root abc;
               #默认的index页面为index.html页面
               index index.html
           }
        }
        
    • Location规则
      1. 运算符
        1)普通匹配
        无前缀(空格) :达到完整匹配,普通匹配
        2)精准匹配
        =
        3)正则匹配:
        ~ 区分大小写
        ~* 不区分大小写
        4)非正则匹配,不会被正则匹配覆盖
        ^~
      2. 优先级
        精准匹配(不会被正则匹配) -> 一般匹配(最大长度匹配),匹配成功后,还会走正则匹配 -> 正则匹配
      3. nginx指令
        1)root的处理结果是:root路径+location路径
        2)alias的处理结果是:目录别名,使用alias路径替换location路径,路径alias后面必须要用“/”结束,否则会找不到文件,而root则可有可无
        3)set: 设置变量,如:set $a 32
        4)proxy_pass : 反向代理 后面有斜杠(关闭)和没斜杠(开放)不一样。关闭和开放只针对在端口后的斜杠“/”
        5)upstream:负载均衡配置
        6)if(condition){...}:当表达式只是一个变量时,如果值为空或任何以0开头的字符串都会当做false
    • Rewrite的使用
      1. rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。

      2. rewrite只能放在server{},location{},if{}中,并且只能对应后边的出去传递的参数外的字符串起作用,例如http://seanlook.com/a/we/index.jsp?id=1&u=str只对/a/we/index.php重写。

      3. Rewrite使用语法:rewrite regex replacement [flag]
        1)regex 匹配路径的正则表达式
        2)replacement 用于替换匹配正则表达式路径的新路径
        3)flag 是处理标志,包括 break,last,rediret(301重定向),permanent(302重定向)

         1>内部重定向,换Path值
             break 停止执行后续命令
             last 会引发location重新匹配
         2>外部重定向(会修改浏览器地址):
             rediret(301重定向)
             permanent(302重定向)
         3>flag为空,rewrite后还会继续往下执行
        

        4)tips:
        1>当有flag值时,rewrite层面的命令会中断。last会引发location重匹配
        2>当没有flag值得时候,rewrite还会往下走,最后一个rewrite覆盖前面。再引发location重匹配

      4. ^/ 正则表达式,代表匹配全部

      5. 若rewrite正则匹配命中,则替换,否则不替换

      6. rewrite匹配后,后面的语句不会执行

    • 负载均衡配置:nginx的upstream目前支持4种方式的分配
      1. 轮询:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
      2. weight:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。down掉的服务器暂时不参与负载
      3. ip_hash:每个请求按访问ip的hash结果分配,这样每个方可固定访问一个后端服务器,可以解决session的问题
      4. 示例:
        upstream nginx{
            ip_hash;
            server 172.17.0.41:8081 weight=2
            server 172.17.0.40:8081 weight=1
        }
        
    • 反向代理实战
      1. 实现一个Nginx配置:static域名的请求,读取静态文件api的域名,请求tomcat。其中,order路径路由到order服务群,product路径路由到product服务群
    • location进阶(共11个阶段)
      1. nginx主要的运行阶段
        1)rewrite阶段:--类似controller
        2)access阶段: --service
        3)content阶段:--response文本给浏览器。echo是content阶段,是第三方模块

      2. 将rewrite能执行的全部执行之后,access,然后content

      3. set命令是rewrite级别的

      4. location与后台服务是如何衔接的:proxy_pass

      5. 代理转发:
        1)静态转发:

         1>root(默认) 在目录找path1(匹配路径)+path2(剩余路径)
         2>alias 在目录里找path2路径(剩余路径)
         tips: 若url以/结尾,认为是目录,执行index。index命令与root/alias指定目录无关,直接在本次匹配的路径下找index指定的文件;否则认为path路径到达文件
        

        2)动态转发(proxy_pass): proxy_pass的关闭与不关闭,针对Ip+port之后有没有/

      6. echo模块的安装
        1)下载 echo-nginx-module-0.60并解压
        2)./configure --add-module=解压path --with-http_ssl_module
        3)make ##编译
        4)make install ##安装

    相关文章

      网友评论

          本文标题:Nginx(二)Nginx使用

          本文链接:https://www.haomeiwen.com/subject/ticrtktx.html