• Nginx使用


    Nginx使用

    参考视频:https://www.bilibili.com/video/BV1zJ411w7SV?spm_id_from=333.1007

    1.正向代理与反向代理

    1.1 正向代理

    • 在客户端(浏览器)配置代理服务器,通过代理服务器访问互联网访问。

    88

    类似于爬虫中设置的代理IP由客户端设定。

    1.2 反向代理

    我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地址,隐藏了真是服务器的地址。

    image-20220325091055221

    2.负载均衡

    2.1 请求流程

    image-20220325091323877

    2.2 概述

    • 单个服务器解决不了,我门增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器的上,将负载分发到不同服务器上,就是我们所说的负载均衡

    • image-20220325092113870

    3.动静分离

    • 为了加快网站的解析速度,可以把静态页面和动态页面由不同的服务器来解析,加快解析速度。将低原来单个服务器压力。

    • 无动静分离效果

    • 动静分离效果

    4.Nginx中的常用命令

    4.1 Linux安装Nginx

    详情请参考:cnblogs.com/Blogwj123/p/15525270.html

    # 通常是使用nginx命令是进入nginx的目录后使用的
    
    # 1.查看版本号
    ./nginx -v
    
    # 2.开始
    ./nginx
    
    # 3.关闭
    ./nginx -s stop
    
    # 4.重新加载
    ./nginx -s reload
    
    # 5.查看帮助
    ./nginx -h
    

    image-20220325094756680

    image-20220325094858557

    5.Nginx的配置文件

    5.1 配置文件的组成

    位置:

    image-20220325101000737

    5.1.1 全局块

    • 从配置文件的开始到events块之间的内容,主要设置一些影响nginx服务器整体运行的配置指令

    • #user  nobody;
      worker_processes  1; # worker_processes值越大,表示支持并发数量越多。
      
      #error_log  logs/error.log;
      #error_log  logs/error.log  notice;
      #error_log  logs/error.log  info;
      
      #pid        logs/nginx.pid;
      
    • image-20220325095717920

    5.1.2 events块

    events块涉及的指令主要影响Nginx服务器与用户网络连接

    image-20220325100101019

    events {
        worker_connections  1024; # 表示最大连接数。
    }
    

    5.1.3 Http块

    • 这里是Nginx配置最频繁的部分,代理、缓存和日志定义的绝大多数功能和第三方模块的配置都在这里。
    • Http模块下包括http全局块Server块

    1.http全局块

    image-20220325100753082

    2.Server块

    image-20220325100904553

    6.反向代理实现

    6.1 简单demo

    server {
            listen       80;
            server_name  localhost; # 改为IP地址
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
            	proxy_pass http:127.0.0.1:8080;
                index  index.html index.htm;
            }
    }
    

    6.2 匹配正则

    image-20220325105657598

    image-20220325105304922

    server {
        listen 9001;
        server_name IP地址;
        location ~/edu/ { # 路径中包含edu转发到 8081的地址
            proxy_pass http://127.0.0.1:8080;
        }
        location ~/vod/ { # 路径中包含vod转发到 8081的地址
            proxy_pass http://127.0.0.1:8081;
        }
    }
    
    

    image-20220325105809038

    6.3 负载均衡

    • 实现效果

      image-20220325113134024

    • 配置

      http {
          upstream mysever{
              server 127.0.0.1:8080; # 后面还有weight 代表权重,表示分配到的概率。
              server 127.0.0.1:8080;
          }
          server {
              listen 80;
              server_name 192.168.17.129;
              location / {
                  proxy_pass http://myserver;
              }
          }
      }
      
    • nginx提供的分配策略

      • image-20220325114425257
      1. 轮训(默认

        每个请求按照时间顺序注意分配到不同的后端服务器,如果后端down掉能自动剔除。

      2. weight

        weight代表权重默认值是1,权重越高被分配的客户端越多;

        http {
            upstream mysever{
                server 127.0.0.1:8080 weight=1; 
                server 127.0.0.1:8080 weight=3;
            }
            server {
                listen 80;
                server_name 192.168.17.129;
                location / {
                    proxy_pass http://myserver;
                }
            }
        }
        
      3. ip_hash

        每个请求按访问IP的hash结果分配,这样每一个访客固定访问一个后端服务器,可以解决session的问题,例如;

        http {
            upstream mysever{
                ip_hash;
                server 127.0.0.1:8080 weight=1; 
                server 127.0.0.1:8080 weight=3;
            }
            server {
                listen 80;
                server_name 192.168.17.129;
                location / {
                    proxy_pass http://myserver;
                }
            }
        }
        
      4. fair(第三方)

        按后端服务器的响应时间来分配请求,响应时间短的优先分配。

        http {
            upstream mysever{
                server 127.0.0.1:8080 weight=1; 
                server 127.0.0.1:8080 weight=3;
                fair;
            }
            server {
                listen 80;
                server_name 192.168.17.129;
                location / {
                    proxy_pass http://myserver;
                }
            }
        }
        

    7.动静分离实现

    7.1 概述

    • 目的:提高访问效率。

    image-20220325115954014

    • 两种方式

      1.一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上发布,目前主流方式。

      2.动态文件跟静态文件混合在一起发布,通过nginx来分开,使用较少。

    • 缓存

      location的缓存时间,结合浏览器确认使用。具体间概述。

      不适用与经常更改的静态资源。

    7.2 配置

    注意:root或者alias后的录从根目录开始

    server {
        listen 9001;
        server_name IP地址;
        location /www { # data目录下的文件夹 该路径一般写成static
            root /data/ ;# root下的文件夹
            index index.html index.htm; # 默认的,根据情况修改。
        }
        
        # http:121.0.0.1:8000/image/bg.jpg
        # 拼接规则 /data/+/image/+bg.jpg 
        location /image/ { #
            root /data/;
            autoindex on; # 显示静态资源列表
        }
        
        location /static {
            alias /data/statics;
            # 拼接规则
            # http:121.0.0.1:8000/static/image/bg.jpg
            # /data/statics/+/image/bg.jpg # 注意从根路径开始
        }
    }
    

    8.高可用

    问题:

    image-20220325123012618

    主从复制 :

    image-20220325123510840

    • 需求:
      • 两台nginx
      • 需要Keepalived
      • 需要虚拟IP
    • image-20220325124542993

    9.nginx原理

    9.1 master-worker

    image-20220325125439378

    9.2 worker 如何进行工作

    image-20220325125728958

    9.3 优势

    image-20220325130105992

    Nginxredis类似都才用了io多路复用机制;worker数和cpu数量相等比较合适。

    image-20220325131121296

  • 相关阅读:
    sql sever 数据字典语法
    端口使用情况
    koa中间件说明
    FLIP动画思想
    跨域下载文件显示文件名
    post方法打开新页面并提交参数
    常用快捷键
    cnpm与npm安装的包不一样
    chrome devTools变量不提示,断点点击去不掉问题
    未修改的模块失效排查方法
  • 原文地址:https://www.cnblogs.com/Blogwj123/p/16087560.html
Copyright © 2020-2023  润新知