0
点赞
收藏
分享

微信扫一扫

07 手写 BA 优化

目录

1.什么是Nginx💕💕💕

2.Nginx的基本目录💕💕💕

3.基本原理图 💕💕💕

4.Nginx配置 💕💕💕

5.日志的分析 💕💕💕

6.虚拟主机与域名解析💕💕💕

7.正向代理💕💕💕

8.反向代理💕💕💕

9.负载均衡💕💕💕

10.全局异常兜底数据返回💕💕💕


1.什么是Nginx💕💕💕

2.Nginx的基本目录💕💕💕

  • 使用 tree命令 查看树状图

如果没有,执行下面操作下载插件!!!

yum -y install tree 

 

3.基本原理图 💕💕💕

4.Nginx配置 💕💕💕

4.1全局配置  

打开conf里面的nginx.conf 就会发现有很多配置 ,主要分三个模块

4.2server_name

4.3location

匹配规则: 

  • 1. location=/uri
  • 2.location /uri 
  • 3.location / 
  • 4.正则表达式 

4.4设置请求资源目录 root/alias

1.root

2.alias 

3.二者区别 

4.5error_page 

后续处理有三种方式:

  • 1.指定具体的跳转地址 
 error_page 404 http://www.baidu.com;
  • 2.直接指定重定向地址 
 error_page 404 500 503 504 502 /50x.html;

         location =/50x.html {
             root html;
         }
  • 3.使用@符号 
 error_page 404  @jump_to_error;

         location @jump_to_error {
            default_type text/html;
            return 404 "<h1>NOT FOUND</h1>";
         }
  • 4. 返回状态码
       error_page 404 500 502 503 504 505 =200   @jump_to_error;
         location @jump_to_error {
            default_type text/html;
            return 200 "<h1>NOT FOUND</h1>";
         }

注:如果开启了负载均衡,若要配置错误页面,一定要开启错误拦截 

  #开启错误拦截配置,一定要开启
  proxy_intercept_errors on;

5.日志的分析 💕💕💕

 5.1日志的配置 

  • 重新指定日志的输入文件
access_log logs/xz.log;
  • 指定日志文件的输出格式 
log_format xzformat '=====This is myformat';

    access_log logs/xz.log xzformat;

5.2日志的常见操作

  • cd /usr/local/nginx/logs 进入目录

  • 查看访问最频繁的前5个IP 
awk '{print $1}' access.log | sort -n | uniq -c | sort -rn | head -n 5
  • 统计访问最多的url前10名 
cat access.log | awk '{print $7}' | sort |uniq -c | sort -rn | head -n 10 | more

6.虚拟主机与域名解析💕💕💕

6.1windows设置虚拟机域名解析 

  • win+R,测试这个网址是否ping通 

  • 然后在浏览器输入该网址:aabbcc.com,也可以访问到nginx页面 

  • Nginx虚拟主机的配置 

6.2使用Nginx搭建图片-文件服务器 

  • server(相当于虚拟主机)配置
server {
         listen       80;
         server_name  aabbccdd.com;
         location /app/img { 接收请求的字符串
           alias /usr/local/software/img/;
        
         }
     }

7.正向代理💕💕💕

例如:如我们现在想要访问外网,但是由于某些原因,无法直接访问到外网,我们可以通过连接一台代理服务器,代理服务将我们的请求提交到外网,然后再将外网的响应反馈给我们,对于外网而言,它只知道有一个请求过来,但是它并不会知道我们是无法直接访问它的。

 

8.反向代理💕💕💕

小张认为:正向代理和方向代理其实本质没啥区别,只是 站在不同位置,做相同事情 

9.负载均衡💕💕💕

9.1初识负载均衡 

  • 1.准备两个jar包

接口说明

  • 2.守护进程启动两个jar包

  •  配置节点和代理
upstream hqdmdxz { 
    server 192.168.0.106:8080;
    server 192.168.0.106:8081;
}

location /api/ {
     proxy_pass http://hqdmdxz; 
     proxy_redirect default;
}
  • 代理解析 

9.2负载均衡策略 

1.轮询(默认)

2.权重

 #upstream:虚拟服务池
 upstream hqdmdxz {  
        server 192.168.20.129:8080 weight=10;
        server 192.168.20.129:8081 weight=5;
     }

 3.ip_hash(固定分发)

upstream hqdmdxz {
        ip_hash;
        server 192.168.20.129:8080;
        server 192.168.20.129:8081;
     }

4.设置状态值

  • down:表示当前server暂时不参与负载
 upstream hqdmdxz {
        server 192.168.20.129:8080 down;
        server 192.168.20.129:8081;
     }
  • backup: 其它所有的非backup机器down的时候,会请求backup机器,这台机器压力会最轻,配置也会相对低
upstream hqdmdxz {
        server 192.168.20.129:8080;
        server 192.168.20.129:8081 backup;
     }

9.3后端节点可用性探测

  • 如果某个应用挂了,请求不应该继续分发过去
  upstream hqdmdxz {
        server 192.168.20.129:8080 max_fails=3 fails_timeout=60s;
        server 192.168.20.129:8081 max_fails=3 fails_timeout=60s;
     }

    server {
        listen       80;
        server_name  aabbcc.com;

        location /api {
           proxy_pass http://hqdmdxz;
           proxy_redirect default;
           proxy_next_upstream error timeout http_500 http_503 http_404;
        }

10.全局异常兜底数据返回💕💕💕

server {
        listen       80;
        server_name  aabbcc.com;

        location /api {
           proxy_pass http://hqdmdxz;
           proxy_redirect default;
           proxy_next_upstream error timeout http_500 http_503 http_404;
           #开启错误拦截配置,一定要开启
           proxy_intercept_errors on;
         
         error_page 404 500  502 503 504 /default_api;

      # 不加 =200,则返回的就是原先的http错误码;配上后如果出现500等错误都返回给用户200状态,并跳 
       转至/default_api
         location = /default_api {
            default_type application/json;
            return 200 '{"code":"-1","msg":"invoke" fail,not found}';
         }

举报

相关推荐

0 条评论