nginx基础之路

作者: A430 | 来源:发表于2020-07-08 17:42 被阅读0次

    一.nginx概念

    在学习nginx之前,带着这几个疑惑去学习
    1.nginx是什么,他可以做什么?
    2.反向代理?
    3.负载均衡?
    4.动静分离?

    1.nginx是一个轻量级的http,web服务器
    优点:高性能,并发能力强,可做反向代理。
    附:同时也提供了IMAP/POP3/SMTP服务
    2.什么是反向代理?
    ok 举个例子:
    先看下正向代理
    eg1.如果国内访问谷歌,我们不可以直接访问,需要先请求代理服务器,再由代理服务器,将请求去转发到谷歌,最后将结果返回。


    image.png

    反向代理
    eg2.我们去访问www.baidu.com 我们只知道访问了百度,得到了想要资源,但是,到底是哪台服务器给我们的资源我们并不知道。
    而在百度内部,假设有A,B,C三台服务器,我们访问了百度(其实是访问了反向代理服务器),他会去根据一些算法,去给我们找到真正有资源的A,B,C服务器,最后由三台中的一台,将资源给反向代理服务器,再由反向代理服务器,将资源给我们。

    image.png

    区别:
    正向代理,对server端(谷歌)透明,Server端只知道是代理服务器,访问了他,是否让他知道用户信息由代理服务器决定。
    反向代理,对client端透明,client端只知道请求了百度(其实是反向代理服务器)拿到了想要的资源,而具体是百度内部,ABC服务器中的谁给他的,他不知道。

    个人理解:客户端为正,服务端为反,重点在服务端内部进行一系列操作(反为重点),所以被称为反向代理,反之不是反向代理,另一种就是正向代理了。
    正对服务端透明 客户端配置
    反对客户端透明 服务端配置 客户端无感知

    3.负载均衡
    最初我们早期BS架构
    多个客户端对应一个服务器,在请求不多时,服务器完全够用。

    image.png
    后随着时代的发展,客户端请求越来越多,单一的服务器很难满足用户需求,抗住大量并发。
    所以 先将请求先集合到一台服务器,再分发给其他服务器完成。------负载均衡
    image.png

    4.动静分离
    动态静态资源在一起


    image.png

    动静态资源分开


    image.png

    将动态请求与静态请求分开
    可理解为
    tomcat解析动态资源
    nginx解析静态资源
    动静分离优点:将动静态资源分开,让动静服务器解析自己的资源,加快网页解析,缓解单个服务器压力。
    ps:不是单纯的动静态页面分开

    二.nginx安装,配置,及命令

    1. Nginx编译相关依赖库的安装
      安装gcc g++的依赖库
      sudo apt-get install build-essential
      sudo apt-get install libtool
      安装pcre依赖库(http://www.pcre.org/
      sudo apt-get install libpcre3 libpcre3-dev
      安装zlib依赖库(http://www.zlib.net
      sudo apt-get install zlib1g-dev
      安装SSL依赖库
      sudo apt-get install openssl
      官网下载tar包http://nginx.org/en/download.html
      下载下来之后:
      tar -zxvf nginx-1.18.0.tar.gz
      cd nginx-1.18.0/
      ./configure
      make #编译
      make install
      验证有没有成功
      cd /usr/local
      ls #发现有nginx文件夹
      cd nginx
      cd sbin
      ./nginx #如果权限不够 加上sudo
      查看应用是否启动成功
      ps -ef |grep nginx
      cd /usr/local/nginx/conf
      more nginx.conf
      image.png
      默认端口号是80
      浏览器访问http://localhost:80 #80可省略
    image.png

    OK 至此nginx 安装完成

    PS windows访问可能要注意
    将80端口设置可访问


    image.png

    2.nginx常用命令
    前提要进入到 cd /usr/local/nginx/sbin 下
    查看版本
    ./nginx -v
    关闭ngnix
    nginx -s stop
    启动ngnix
    ./nginx

    ./nginx -s 参数
    stop —快速关机
    quit —正常关机
    reload —重新加载配置文件
    reopen —重新打开日志文件
    3.解读配置文件
    3.1全局块
    3.2event块
    3.3http块

    三.nginx配置实例

    1.反向代理
    ok,要配置第一步我们先要找到配置文件

    /usr/local/nginx 下的conf文件

    image.png

    nginx配置文件组成
    (1).全局块
    nginx全局配置,影响nginx整体运行

    eg. image.png

    nginx用来处理服务器的工作进程数

    (2)events块
    nginx服务器允许用户网络连接数
    下面表示1024个


    image.png

    (3)http块
    nginx配置最多的地方,代理,缓存,日志等就是在此处配置的。
    里面又分http全局块,server块
    http全局块:
    日志自定义,超时时间,等等
    server块:一个server相当于一个虚拟主机,可以有多个虚拟机
    里面还分
    server全局块 监听端口,主机ip地址。
    location块 请求路径/有关。
    简单的反向代理流程:


    image.png
    在vi /etc/hosts 加上: image.png
    nginx中配置
    image.png

    ok访问 www.123.com 发现访问的是 本地8080端口的tomcat
    反向代理实例2:
    访问168.56.43.11:9999/8080html 进入到127.0.0.1:8080
    访问168.56.43:11:9999/8081html 进入到127.0.0.1:8081
    首先启动两个tomcat实例,一个端口为8080,一个为8081
    在tomcat目录中的webapps,创建一个文件加8080html再创建一个文件a.html

    image.png
    测试一下:访问http://127.0.0.1:8080/8080html/a.html
    nginx中配置
    image.png
    ok配置完成
    输入
    http://168.56.43.11:9999/8080html/a.html ok
    location配置规则
    location配置规则

    2.负载均衡
    输入172.23.24.XX/html/a.html 负载均衡效果,被8080,8081端口分摊
    先启动两个tomcat webapps目录下均建立html/a.html
    nginx配置中

    image.png
    默认采用轮询策略
    补充:weight 权重策略 默认个为1
    在server 172.23.24.xx 后面加 weight=5 越大表示越先分配
    image.png
    ip_hash策略
    给A用户分配a服务器,B用户分配b服务器,只要服务器不宕机固定访问a,b
    可以解决session的缓存的问题
    image.png
    fair策略
    根据服务器响应时间,越短就越先分配
    image.png

    3.动静分离

    动静分离
    配合浏览器 expire缓存使用,在特地时间内去访问静态不容易变的资源,去比对服务器中,改文件的更改时间,如果在时间内,就不用去请求服务器。
    要求:
    当请求192.168.1.X www/a.html 访问的是本地/opt/test/www/a/html
    当请求192.168.1.X image/ 访问的是本地/opt/test/iamge/
    配置如图
    autoindex on 参数是帮你把改目录下文件列出来
    image.png
    expires 3d 在location加入 表示3天内

    4.高可用集群

    image.png

    之前nginx流程如图所示,如果这一台nginx宕机了怎么办
    这里有个备份nginx概念,主nginx宕机,有备份nginx来处理。怎么知道是否宕机?借助于keepalived检测
    至于客户端怎么知道是访问主nginx还是备nginx?有个虚拟ip的概念,对外暴露的只是虚拟ip

    高可用
    具体配置看此视频

    四.nginx原理

    nginx实际分为master进程和多个work进程,master得到请求将任务分给work,由work执行


    image.png

    而work是通过争抢机制去拿到任务


    image.png

    多个work的好处
    nginx -s reload 是热部署,这样只有现在有任务的work不能停止,而其他work可以停止去读取配置文件。
    各个work都是独立的,即使有个work出现错误,也不会影响其他work工作
    每个work是个独立的进程,而且每个进程里面只有一个独立的线程,并且采用io多路复用的方式,这样的好处就是可以处理多个task不会出现堵塞
    如何设置work?
    work数与服务器cpu数相等
    多了会造成线程上线文切换的开支
    少了会造成浪费

    参考:
    反向代理,正向代理区别
    nginx
    nginx安装

    相关文章

      网友评论

        本文标题:nginx基础之路

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