1、基本介绍

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

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

2、反向代理

2.1、正向代理

如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet则需要通过代理服务器来访问,这种代理服务就称为正向代理

2.2、反向代理

其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址

3、负载均衡

在处理高并发的问题时我们可以进行纵向扩展也就是提高电脑配置的方式来解决问题,但是这样总是会行不通的,那么我们就需要进行横向扩展,就是增加服务器的数量,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原来的请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡

4、动静分离

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

5、nginx的命令

whereis nginx  # 查找安装路径# 使用nginx必须进入sbin目录,需要先找到nginx的安装目录 进入sbin目录执行一下命令
./nginx ./nginx -v 查看版本号./nginx -s stop./nginx -s quit./nginx -s reload# ./nginx -s quit:此方式停止步骤是待nginx进程处理任务完毕进行停止。# ./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

6、nginx的配置文件

在安装目录下的conf目录中有一个nginx.conf文件

6.1、由三部分组成

第一部分 全局块

从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行Nginx服务器的用户组,允许生成的worker process数,进程PID存放路径,日志存放路径和类型以及配置文件的引入等

worker_processes  1;

这是nginx服务器并发处理服务的关键配置,worker_processes越大,可以支持的并发处理数量也越多,但是会受到硬件,软件等设备的制约

第二部分 events块

events {worker_connections  1024; # 表示每个work process支持的最大连接数为1024
}

events块涉及的指令主要影响Nginx服务器与用户的网络连接,这部分的配置对Nginx的性能影响较大,在实际中应该灵活配置

第三部分 http块

Nginx服务器配置中最频繁的部分,http块也可以包括http全局块、server块

http全局块

http全局块配置的指令包括文件引入、MIME-TYPE定义,日志自定义,连接超时时间、单链接请求数上限等

server块

这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本

每个http块可以包括多个srever块,而每个server块就相当于一个虚拟主机,而每个server也分为全局server块以及可以同时包含多个location块

全局server块

最常见的配置时本虚拟机主机的监听配置和本虚拟机主机的名称或IP配置

location块

一个server块可以配置多个location块,这块的作用是基于nginx服务器接收到的请求字符串,对虚拟注解名称之外的字符串进行匹配,对特定的请求进行处理,地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行

7、Nginx配置实例-反向代理

案例一

实现效果:打开浏览器,在浏览器地址栏输入地址www.123.com,跳转Linux系统tomcat主页面中

准备工作:在linux中安装tomcat

具体实现:在windows的host文件中加入

10.10.10.129 www.123.com

前面是虚拟机ip地址 后面是映射的域名

nginx也需要配置

案例二

实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,nginx监听端口为9001

访问 http://127.0.0.1:9001/edu/ 直接跳转到127.0.0.1:8080

访问 http://127.0.0.1:9001/vod/ 直接跳转到127.0.0.1:8081

先弄两个tomcat并修改配置文件中的端口号

之后启动两个tomcat并进行测试

在8080端口的tomcat中创建edu文件夹并创建a.html文件

在8081端口的tomcat中创建vod文件夹并创建a.html文件

修改nginx的配置文件

添加这一段配置之后重启nginx在浏览器地址访问

http://10.10.10.129:9001/edu/a.html

http://10.10.10.129:9001/vod/a.html

就会产生我们要的效果

8、Nginx配置实例-负载均衡

实现效果:

浏览器地址栏输入地址 http://10.10.10.129/edu/a.html 负载均衡效果,平均8080和8081端口中

需要在nginx的配置文件中进行负载均衡的配置

在http块中进行如下配置

之后访问地址之后进行刷新,每次刷新之后显示的内容都不容易,表示已经实现了负载均衡

分配策略

1.轮询

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

2.weight

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

配置方式就是在轮询配置的upstreat配置中,端口号后面加上权重

3.ip_hash

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

这样做可以保证同一个ip访问到的服务器永远是同一个服务器,这样就可以保证session的正常使用

4.fair(第三方)

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

9、Nginx配置实例-动静分离

准备工作:

准备一些静态资源,用于进行访问

具体配置:

在nginx配置文件中进行配置

访问http://10.10.10.129/www/a.html和http://10.10.10.129/image/123.JPG

autoindex on 配置是列表显示

当我们直接访问的是一个目录的时候就会这么显示内容

10、Nginx配置实例-高可用

10.1、高可用介绍

所有的服务器都有宕机的可能性,所以当我们只有一台服务器的时候就不能保证程序的正常运行,这个时候我们就需要使用多台服务器来保证服务器的正常运行,其中会有一台主服务器和多台备用服务器。

一般都是先发送到主服务器,如果主服务器宕机那么就会使用备份服务器进行转发

10.2、配置

需要使用一个软件keepalived类似于一个路由,会检测当前nginx服务器是否宕机

需要两台nginx服务器

需要一个虚拟ip地址

修改keepalived配置

修改etc/keepalived/keepalived.conf

global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}   notification_email_from Alexandre.Cassen@firewall.locsmtp_server 10.10.10.130smtp_connect_timeout 30router_id LVS_DEVEL
}vrrp_script chk_http_port {script "/usr/local/nginx/nginx_check.sh"interval 2              # 检测脚本执行的间隔weight 2}vrrp_instance VI_1 {state BACKUP            # 备份服务器上将 MASTER 改为 BACKUPinterface ens33          # 网卡virtual_router_id 51    # 主、备机的 virtual_router_id 须相同priority 100            # 主、备机取不同的优先级,主机值较大,备机值较小advert_int 1authentication {auth_type PASSauth_pass 1111}   virtual_ipaddress {192.168.17.50      # VRRP H 虚拟地址}
}

在/usr/local/nginx/中添加一个nginx_check.sh脚本

#!/bin/bash
A=`ps -C nginx ¨Cno-header |wc -l`
if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
fi

启动nginx和keepalived

service keepalived start

测试

在浏览器地址栏输入虚拟ip进行测试,之后将主服务器停掉,然后再访问ip

尚硅谷nginx笔记相关推荐

  1. Java 基础 第3阶段:高级应用——尚硅谷学习笔记(含面试题) 2023年

    Java 基础 第 3 阶段:高级应用--尚硅谷学习笔记(含面试题) 2023 年 Java 基础 第 3 阶段:高级应用--尚硅谷学习笔记(含面试题) 2023 年 第 9 章 异常处理 9.1 异 ...

  2. 尚硅谷 jQuery 笔记(张晓飞 2018)

    title: 尚硅谷 jQuery 笔记 date: 2020-11-24 21:40:50 toc: true description: jQuery是JS的一个封装的库函数集,用于DOM的CRUD ...

  3. 尚硅谷Nginx新版升级教程,带你轻松掌握高并发系统架构

    摘要:桃李春风一杯酒,江湖夜雨十年灯. "你说有没有一种可能, "你喜欢我,又不好意思说出口, "其实你可以直接说出来的, "我会让你知道什么叫心想事成.&qu ...

  4. 尚硅谷_CSS3 笔记

    目录 什么是CSS3 选择器 基本选择器及其扩展 属性选择器 伪类与伪元素选择器 css声明的优先级 自定义字体&字体图标 复习1 新的UI方案 文本新增样式 opacity RGBA 文字阴 ...

  5. B站MySQL(尚硅谷)学习笔记

    B站MySQL基础(尚硅谷)学习笔记 最近在学习数据库技术,并且把视频中的知识点进行了汇总,字数较多,仅供参考. 会持续更新 欢迎读者提出问题与错误,一起交流~ 视频前几集所讲述的基本知识: DB:数 ...

  6. Nginx由浅到深-尚硅谷nginx教程

    Nginx由浅到深 前言 一.nginx的基本概念 1.反向代理 2.负载均衡 3.动静分离 二.nginx在linux下的安装 1.安装nginx相关依赖 安装 pcre 依赖 安装剩余依赖 2.安 ...

  7. 尚硅谷JavaSE笔记(四)

    系列文章目录 尚硅谷JavaSE笔记(一) 尚硅谷JavaSE笔记(二) 尚硅谷JavaSE笔记(三) 尚硅谷JavaSE笔记(四) 文章目录 十六.File 类与 IO 流 1.java.io.Fi ...

  8. 尚硅谷vue笔记 详细讲解版(尚硅谷 天禹老师)

    视频:[尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通]https://www.bilibili.com/video/BV1Zy4y1K7SH?vd_source=10e3dfac9 ...

  9. 尚硅谷设计模式笔记-装饰者模式

    文章目录 一.需求 二.装饰者方法 三.装饰者模式的JDK应用 笔记来源: 尚硅谷 一.需求 星巴克咖啡订单项目(咖啡馆) : 咖啡种类/单品咖啡: Espresso(意大利浓咖啡). ShortBl ...

最新文章

  1. Java之HashMap、Hashtable、LinkedHashMap、TreeMap、ConcurrentHashMap简单的区别
  2. 浅谈Proxmark3 Easy Gui 4.0 5.0 5.1加强版
  3. 牛客网 二叉搜索树与双向链表
  4. IE7,iE6,超链接禁用失效解决方法
  5. Fastjson 远程命令执⾏漏洞
  6. java下载天地图数据,天地图离线地图,可指定经纬度范围
  7. ANSYS Workbench 目标参数优化案例分析
  8. 1、51单片机——郭天祥课后习题解答
  9. MySQL复制表数据到新表的方法
  10. 2021爱分析·云计算厂商全景报告
  11. 使用python 怎么下单炒股票?
  12. 骆昊python100天百度网盘_GitHub - yiailake/Python-100-Days: Python - 100天从新手到大师
  13. 《数字图像处理》冈萨雷斯版 读书笔记(二)
  14. mysql内嵌插入语句_MySQL中添加或插入语句(Insert)的几种使用方式
  15. strcpy和strncpy的区别
  16. GuidedImageFiltering
  17. 大山深处的孩子,正在看见更远的星空
  18. python输出最长字符串_使用Python打印最长的字母子字符串,并打结...
  19. 使用普通摄像头,轻松实现精准动作捕捉能力
  20. Java基础--继承案例(二)

热门文章

  1. 私域运营第五讲:实体餐饮店如何通过搭建私域流量实现营收增长
  2. 基于springboot+vue的食疗系统
  3. Mybatis-Plus根据时间段去查询数据
  4. java递归查询数据库树
  5. 华大(小华)HC32L130工程创建
  6. 在MacOS上安装MacTex
  7. 元宇宙时空——元宇宙是什么
  8. 目标检测论文阅读:DeFCN(POTO+3DMF)算法笔记
  9. 竞赛题-6283. 正整数和负整数的最大计数
  10. 步进电机编写单4拍或4-8拍方式的汇编或c语言控制程序.,51单片机C语言和汇编控制28BYJ48步进电机程序...