当前位置 博文首页 > 蜗牛为梦想而生H:Nginx配置

    蜗牛为梦想而生H:Nginx配置

    作者:[db:作者] 时间:2021-09-07 19:20

    验证配置是否正确: nginx -t

    查看Nginx的版本号:nginx -V

    启动Nginx:start nginx

    重启Nginx:nginx -s reload

    快速停止或关闭Nginx:nginx -s stop

    正常停止或关闭Nginx:nginx -s quit

    配置文件修改重装载命令:nginx -s reload

    1. nginx

    Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
    Nginx专为性能优化而开发,性能是其重要的考量,实现上非常注重效率,能经受高负载的考验,能支持高达50000个并发连接数

    2. Nginx的作用

    1: 静态服务器:
        在我们前后端分离的项目中 我们的前端项目开发完毕之后,也是需要发布到一个服务器上,供用户访问  此时
        就需要用到nginx ? 
        
    2: 虚拟主机:
            我们一个服务器可以模拟多个虚拟主机,虽然访问的链接不同,但是都表示一个主机 所以访问的内容是一致的
            
    3: 反向代理:
            nginx可以作为反向代理服务器,客户端发送http请求,访问的是nginx这个反向代理服务器,反向代理服务器nginx会选择目标服务器,最终完成请求,获取数据 
    ?
    4: 负载均衡: 
            我们部署应用,项目运行在tomcat上 一个tomcat的并发访问默认200 手动调并发数量 最多600-700的并发 
            当我们用户量比较大的时候 我们的项目要占用不同的端口部署多个,目的起到请求分流的效果,减轻服务器        的压力,此时就需要负载均衡
            

    3. window下的安装

    3.1. 下载

    3.2直接解压

    3.3. 双击启动

    进入解压目录,双击即可启动,此时可能页面一闪而过

    3.4. 浏览器访问

    http://localhost 

    4. 静态资源服务器

    nginx做静态资源服务器配置的方式有很多 

    4.1. 放在nginx中

    当我们访问http://localhost时 浏览器会出现一个页面  这个页面 就是nginx解压目录中的html文件夹中的index.html ?
    既然能够显示这个index.html  我们可以把我们的页面也放到这个目录下,此时就能访问 

    4.1. 部署流程

    4.1.1.放入静态资源

    4.1.2.重启nginx

    nginx -s reload

    4.1.3.浏览器访问

    4.1.4. 修改首页

    问题描述: 
        1: 默认加载index.html  为什么默认加载index.html 
        2: 不想加载index.html  我想进入加载其他的页面 或者我的首页就不叫index.html
    • 修改配置文件

    ?代理访问:( 很有可能404 , 就是代理路径 proxy_pass 末尾带不带/的问题, 好像本地不需要代/ , 互联网需要带 /)

    https://www.qq.com/

    4.2. 放到nginx外

    部署静态资源除了放在nginx解压目录中之外 还可以放到电脑上的任何一个地方 然后通过配置的访问 指定到这个位置

    4.2.1. 部署流程

    • 修改配置文件

    • 浏览器访问

    5. nginx配置文件

    nginx的配置文件名字叫 nginx.conf  在解压目录下的config目录 

    5.1. 配置文件组成部分

    第一部分:全局块
        主要会设置一些影响Nginx 服务器整体运行的配置指令
    第二部分:Events块
        worker_connections  1024;表示每个 worker process 支持的最大连接数
    第三部分:Http块      
        这是Nginx服务配置中最频繁的部分,代理、缓存和日志定义等绝不多数功能和第三方模块的配置都在这里。需要    注意的是:http 块也可以包括http全局块、server块。server 块又包含全局server块和localtion块。

    5.2. 配置文件的结构

    main: ?  # 全局配置,对全局生效
        events:  # 配置影响 Nginx 服务器或与用户的网络连接
        http: ? # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置
         ? upstream: ? # 配置后端服务器具体地址,负载均衡配置不可或缺的部分
         ? server : #配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块
         ? server
         ? ? location: # server 块可以包含多个 location 块,location 指令用于匹配 uri
         ? ? location 

    6. 虚拟主机

    我们一个服务器可以模拟多个虚拟主机,虽然访问的链接不同,但是都表示一个主机 所以访问的内容是一致        的,nginx的一个server标签就是一个虚拟主机  我们配置多个server标签就可以代表多个主机
    

    6.1. 域名解析

    6.2. 配置虚拟主机

    1.配置多个server

    2.添加域名映射

    C:\Windows\System32\drivers\etc\hosts文件

    3.重启测试

    7. 反向代理服务器

    7.1. 正向代理

    概念: Nginx代理客户端来访问互联网。典型代表:翻墙。
    特点: 客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户      端;正向代理模式隐藏了真实客户端信息。

    7.2. 反向代理

    概念: Nginx作为反向代理服务器接收来自客户端的请求,并将请求转发给后端的真实服务器集群中的一台。
     ? ?  典型代表:负载均衡
     ? ? ?
    特点: 主要用于服务器进群分布式部署的情况下,隐藏了服务器的真实信息

    7.3. 反向代理配置

    1.新建springboot工程,启动

    2.配置反向代理

    3.nginx重启测试

    8. 负载均衡

    场景: 当一个应用占用不同的端口启动多次的情况下, 每个端口的应用都包含所有的功能,在高并发的情况下 做到分流效果,此时客户端的一个请求过来,到底这个请求要去哪个服务器中访问,此时面临了一个一对多的关系,此时需要负载均衡算法

    8.1. 配置负载均衡

    1.启动多个springBoot工程

    2.配置负载均衡

    8.2轮训策略演示

    通过测试 默认是轮训 ?
    除了轮训还有其他的负载均衡策略?
    比如:?
    1.加权轮询:
    2.ip_hash: 
    每个请求按照IP的hash结果分配,同一个IP客户端访问一个固定的后端服务器。
    优点:可以保证来自同一个IP的请求,被打到固定的机器上,可以解决session的问题。  
    
    3.url_hash
    按访问url的hash结果来分配请求,相同url固定转发到同一个后端服务器进行处理。 

    8.3. 参数了解

    任何负载均衡策略都可以携带参数?

    1: down:当前服务器暂不参与负载;
    2: weight:权重,值越大,服务器的负载量越大;
    3: max_fails:允许请求失败的次数,默认为1;
    4: fail_timeout:max_fails次失败后暂停的时间;
    5: backup:备份机,只有其他所有的非backup机器down或者忙时才会请求backup机器。

    9. Linux安装nginx

    第一步:

    安装需要的插件
    ?
    yum -y install gcc-c++
    ?
    yum -y install zlib zlib-devel openssl openssl-devel 
    ?
    yum -y install patch

    第二步:

    新建目录
     mkdir  /opt/nginx 
    ?
    进入目录
        cd /opt/nginx 

    第三步:

    上传nginx的包 

    第四步:

    解压 
     tar -zxvf nginx-1.14.2.tar.gz 

    第五步:

    进入解压目录 
     cd nginx-1.14.2
    ?
    执行命令 
        ./configure  (注意这个命令可以携带参数)

    第六步:

    执行make指令 ?
     make ?
     
    执行安装指令 
        make install
     

    第七步:

    默认的安装的目录: /usr/local 目录下的nginx ?
        
    进入安装目录 
        cd /usr/local/nginx 

    第八步:

    //进去sbin目录 
    cd  sbin ?
    ?
    启动nginx ?
     ./nginx 

    第九步:测试

    10. Linux使用

    和win使用类似

    11. 拓展内容

    11.1. 面试题一

    nginx能够并发处理5万请求,请问nginx 请求处理机制是如何的? ?

    11.1.1. 相关知识储备

    一个nginx可以并发处理多个请求,就证明了nginx和客户端是一对多的关系 , 也就是说nginx服务器有能力同时给多个客户端提供服务, 一般来说,能够完成并行处理的方式大概有如下几种 
    ?
    第一种: 多进程的方式 
    第二种: 多线程的方式 
    第三种: 异步的方式 

    11.1.1.1. 多进程的方式

    理解: 
        服务器接收到一个客户端请求时,服务器的主进程会生成一个子进程,这个子进程会和客户端连接并且进行交互,
        交互完毕之后 连接断开,这个子进程就结束了 ?
        
    优缺点: 
        多进程方式的优点在于,设计和实现相对简单,各个子进程之间相互独立,处理客户端请求的过程彼此不受到干    扰,并且当一个子进程产生问题时,不容易将影响漫延到其他进程中,这保证了提供服务的稳定性。当子进程退出  ? 时,其占用资源会被操作系统回收,在资源和时间上会产生一定的额外开销,因此,如果服务器接受大量并发请    求,就会对系统资源造成压力,导致系统性能下降

    11.1.1.2. 多线程的方式

    理解: 
        服务器每当接受到一个客户端请求时,会由服务器主进程派生一个线程出来和该客户端进行交互。
    ?
    优缺点: 
        由于操作系统产生一个线程的开销远远小于产生一个进程的开销,所以多线程方式在很大程度上减轻了web服务器     对系统资源的要求。该方式使用线程进行任务调度,开发方面可以遵循一定的标准,这相对来说比较规范和有利于    协作。但在线程管理方面,该方式有一定的不足。多个线程位于同一个进程内,可以访问同样的内存空间,彼此之    间相互影响

    11.1.1.3. 异步的方式

    同步: 是指发送方发送请求后,需要等待接收到接收方发回的响应后,才接着发送下一个请求
    异步: 发送方发出一个请求后,不等待接收响应这个请求,就继续发送下个请求
    ?
    ?
    异步的方式也分为2种 
    ?
    异步阻塞
    异步非阻塞 
    • 异步阻塞

        发送方向接收方发送请求后,不用等待响应,可以接着进行其他工作;接收方处理请求时进行操作如果不能马上得到结果,就一直等待返回结果后,才响应发送方,期间不能进行其他工作。这种方式在实际中不使用。
    • 异步非阻塞

        发送方向接收方发送请求后,不用等待响应,可以继续其他工作;接收方处理请求时进行操作如果不能马上得到结果,也不等待,而是马上返回去做其他事情。当操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方。

    例如: 在超市排队付账。客户(发送方)向收款员(接收方)付款(发送请求)后在等待收款员找零的过程中,还可以做 其他事情,比如打电话、聊天等;而收款员在等待收款机处理交易(操作)的过程中可以帮助客户将商品打包, 当收款机产生结果后,收款员给客户结账(响应请求),这种方式是发送方和接收方通信效率最高的一种。

    11.1.2. 面试题回答

    nginx 之所以能够处理高并发的情况 主要是 nginx采用的是多线程+异步中(异步非阻塞的方式)处理web请求的。
    ?
    流程: 
        nginx服务器启动后,会产生一个主进程(master process)和多个工作进程(worker process)(工作进程个数可以指定 例如 worker_processes 5 )。nginx服务器的所有工作进程都用于接收和处理客户端的请求。
        
        每个工作进程使用了异步非阻塞方式,可以处理多个客户端请求。当某个工作进程接收到客户端的请求以后,进行处理,如果不能立即得到结果,就去处理其他的请求而非阻塞;而客户端在此期间也无需等待响应,可以去处理其他的事情;当返回结果时,就会通知此工作进程;该进程得到通知,暂时挂起当前处理的事物,去响应客户端请求。

    11.2.面试题二

    Nginx的工作模式(或者问Nginx的工作原理)

    11.2.1. 面试题回答

    1: Nginx在启动后,会有一个master进程和多个相互独立的worker进程。
    2: master进程接受来自外界的信号,向各个worker进程发送信号,每个worker进程都有可能来处理这个连接。
    3: master进程能监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动启动新的worker进程。不    会造成业务的中断。

    11.2.2. nginx的原理图

    cs
    下一篇:没有了