• Nginx


    Nginx

    介绍

    1. Nginx:

      Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

    2. 代理:增强目标对象功能

      • 正向代理:是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。(翻墙)

      • 反向代理:反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

    优点:

    1. 可以高并发连接

      • 官方测试Nginx能够支撑5万并发连接,实际生产环境中可以支撑2~4万并发连接数。

    2. 内存消耗少

    3. 成本低廉

    4. 配置文件非常简单

    5. 支持Rewrite重写

      • 能够根据域名、URL的不同,将http请求分到不同的后端服务器群组。

    6. 内置的健康检查功能

      • 如果NginxProxy后端的某台Web服务器宕机了,不会影响前端的访问。

    7. 节省带宽

    8. 稳定性高

      • 用于反向代理,宕机的概率微乎其微。

    9. 支持热部署

    工作原理

    • Nginx是由内核和模块组成的。其中,内核的设计非常的微小和简洁,完成的工作也非常的简单,仅仅通过查找配置文件将客户端的请求映射到location block(location是Nginx配置中的一个指令,用于URL匹配)而在这个location中配置的每个指令将会启动不同的模块完成相应的工作。

    • 核心模块:HTTP模块、Event模块、Mail模块

    • 基础模块:HTTP Access模块、HTTP FastCGl模块、HTTP Proxy模块、HTTP Rewrite模块

    • 第三方模块:HTTP Request Hash模块、Notice模块、HTTP Access Key模块

    • Nginx的高并发优势得益于采用epoll模型,于传统的服务器类型不一致(程序的架构不同)

    • epoll模型是在linux内核2.6以后才有的,异步非阻塞

    • 而Apache服务器采用的是select模型

    • epoll模型原理:对于事件句柄的选择不是遍历所有事物通知而是事件响应的,就是句柄事件上来立马选择出来,不需要遍历整个事件句柄链表,因此效率特别高

    • select模型原理:select选择句柄的时候,是遍历所有的句柄,也就是说句柄有事件响应时,select需要遍历所有的句柄才能获得哪些句柄上有事件通知,因此效率非常低。

    安装配置(linux版)

    1. 下载Nginx :wget http://nginx.org/download/nginx-1.13.0.tar.gz

    2. 解压

    3. 编译:切换nginx安装目录,编译指令./configure

    4. 解决编译器找不到问题:

      1. yum install gcc gcc-c++ ncurses-dev perl

      2. yum install pcre pcre-devel

      3. yum install zlib gzip zlib-devel

    5. 重新编译

    6. 安装Nginx服务:make & make install

    7. 启动Nginx服务:进入sbin里,./nginx

    8. 查看是否启动成功:ps -ef | grep nginx

    常用命令

    1. 重启nginx:./nginx -s reload

    2. 关闭nginx:./nginx -s stop

    Nginx管理虚拟机

    1. 三大配置

      1. 基于域名的虚拟机配置

        1. 进入配置文件 vi /usr/local/nginx/conf/nginx.conf

        2. server {
                 listen 80;
                 server_name zhiyou100.com;
             location / {
                 root view;
                 index login.html;
             #在Nginx的安装目录下 建个view目录,在里面存个login.html文件
            }
    2. 重启Nginx

      1. 进入sbin目录:./nginx -s reload

    3. 配置本地域名映射

      1. 进入微软的C:WindowsSystem32driversetc目录

        1. 编辑hosts文件 添加192.168.75.128 zhiyou100.com

    4. 基于端口号的虚拟机配置

    5. 基于IP的虚拟机配置

      1. server_name 字段 同样可以存放IP地址(虚拟机的IP地址)

    负载均衡

    1. 企业中在解决高并发问题,一般有两种方向的处理策略:软件和硬件

    2. 从硬件上面来说,公司会添加负载均衡器来分发大量请求

    3. 从软件方面来说,公司解决高并发瓶颈处:数据库+web服务器两处添加解决方案

    4. 其中web服务器是最常用的一种解决方案,添加负载均衡就是使用Nginx实现负载均衡

    负载均衡的作用

    1. 转发功能

      • 按照一定的算法(轮询、权重)将客户端请求转发到不同的应用服务器上面,减轻单个服务器的压力,提高系统的并发质量。

    2. 故障排除

      • 通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器宕机了,自动的将请求转发到其他的应用服务器上面

    3. 恢复添加

      • 如果检测到发生故障的应用服务器恢复工作,那么它会自动把恢复的应用服务器添加进去。

    搭载负载均衡

    1. 克隆虚拟机

      1. 打开虚拟机,确保虚拟机处于关机状态

      2. 点击拍摄快照,定义名字

      3. 点击克隆

      4. 点击下一步后,选择创建完整克隆-->指定克隆虚拟机的镜像位置

      5. 修改虚拟机名称:

        hostnamectl set-hostname slave1(虚拟机名称)

      6. 查看名称是否修改成功:hostname

      7. 重新启动虚拟机:reboot

    2. 搭建tomcat集群开发步骤

      1. 开启三个tomcat,每个虚拟机都启动

        1. 查看tomcat是否启动成功,输入jps,出现bootstrap就说明启动成功

    3. 配置Nginx的核心配置文件

      1. #配置多个tomcat所在的服务器IP
        upstream tomcatServer1{
        server 192.168.75.129:8080 weight=3; #ip和端口号 权重 red
        server 192.168.75.128:8080; #yellow
        server 192.168.75.130:8080 weight=5;
        }
        server{
        listen 80;
        server_name zhiyou200.com;
        location / {
        proxy_pass http://tomcatServer1; #代理
        }
        }
      2. 配置web服务器集群的时候,在nginx中可以设置几个变量或者参数

        1. weight (权重) :值越大,承担负载均衡的压力就越大(访问次数增多)

          • 按照配置文档中设置就是 1+3+5 =9,访问zhiyou200.com网页9次中,其中背景为红色的页面一共出现三次,黄色页面为一次,白色页面为五次

        2. max_fails :允许失败的最大请求次数

        3. backup (闲置,备用机): 其他所有的非backup服务器宕机或者忙机状态的时候,请求backup指定的服务器

        4. fail_timeout : 失败超时时间

    4. 部署项目

      1. 第一步

        • 修改tomcat的配置文件server.xml /usr/local/tomcat/conf/server.xml

        • 修改tomcat默认的访问项目名称和项目的发布路径,docBase就是war包名称(虚拟目录/项目名称)

          <Context path="" docBase="video" reloadable="true"/>

      2. 第二步

        • 修改springmvc配置文件,指定默认的访问路径

        • <mvc:view-controller path="/" view-name="forward:/front/user/index.do"/>

        • 然后重新打成war包

      3. 第三步

        • 修改nginx的配置文件 nginx.conf

        • #配置多个tomcat所在的服务器IP
             upstream tomcatServer1{
                 server 192.168.75.129:8080 weight=3; #ip和端口号 权重
                 server 192.168.75.128:8080;
                 server 192.168.75.130:8080 weight=5;
                 ip_hash;#可以解决session共享
                }
             server{
                 listen 80;
                 server_name zhiyou200.com;

                 location /{
                         proxy_pass http://tomcatServer1; #代理
                         index /;#添加上该行    
                }
                }
      4. 第四步

        1. 解决样式找不到问题

          1. 如果把tomcat的端口号改为80,样式就可以显示出来,但是这会和nginx的端口号产生冲突,所以一般不把开启nginx的那台服务器去打开tomcat

          2. 然后把tomcat的配置文件的端口号改为80,上面的server路径的端口号也改为80

  • 相关阅读:
    mysql的权限定义
    数据库的启动流程和关闭介绍/mysql初始化配置文件
    SQL 执行顺序
    AJAX 同步请求锁浏览器
    JSON
    Json.NET
    JSON.parse()和JSON.stringify()
    the XMLHttpRequest Object
    命名方式
    varchar 和 nvarchar 的区别和使用
  • 原文地址:https://www.cnblogs.com/---------zjh---------/p/13644630.html
Copyright © 2020-2023  润新知