当前位置: 首页 > news >正文

Nginx 学习笔记

Nginx 学习笔记

文章目录

  • Nginx 学习笔记
    • 1.Nginx 的简介
    • 1.1正向代理
    • 1.2反向代理
    • 1.3负载均衡
    • 1.4动静分离
    • 1.5Nginx的安装
    • 1.6Nginx的常用命令
    • 1.7Nginx的配置文件
      • 1.7.1配置文件的位置
      • 1.7.2包含三部分内容
    • 1.9配置反向代理的环境
      • 1.9.1在Linux环境下安装tomcat服务器
      • 1.9.2在windows下面配置映射的路径
    • 1.8Nginx 配置实例-反向代理实例 1
    • 1.9Nginx 配置实例-反向代理实例 2
    • 2.0Nginx 配置实例-负载均衡
      • 2.0.1准备工作
      • 2.0.2修改配置文件
      • 2.0.3负载均衡分配策略
    • 2.1Nginx 配置实例(动静分离准备工作)
      • 2.1.1什么是动静分离?
      • 2.1.2准备工作
      • 2.1.3具体配置
      • 2.1.4最终测试
    • 2.2Nginx 的原理
      • 2.2.1mater 和 worker
      • 2.2.2worker 如何进行工作的
      • 2.2.3一个 master 和多个 woker 有好处
      • 2.2.4设置多少个 woker 合适
      • 2.2.5连接数 worker_connection

1.Nginx 的简介

Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50000 个并发连接数。

Nginx有以下特征:

  • 正向代理
  • 反向代理
  • 动静分离

1.1正向代理

需要在客户端配置代理服务器进行指定网站访问
在这里插入图片描述

1.2反向代理

暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。
在这里插入图片描述
在这里插入图片描述

1.3负载均衡

增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。
在这里插入图片描述
在这里插入图片描述

1.4动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
在这里插入图片描述在这里插入图片描述

1.5Nginx的安装

安装nginx前首先安装四个依赖包 --以下命令一键安装四个依赖

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

等待自动安装完成后,进入/usr/src目录下

在这里插入图片描述
将下载好的文件,放入/usr/src下
在这里插入图片描述
解压文件

tar -zxvf nginx -1.23.1.tar.gz

在这里插入图片描述进入刚刚解压好的目录

cd nginx-1.23.1

分别执行下面命令

./configure        --- 用来检测安装平台的目标特征
make                  --- 用来编译( 从Makefile中读取指令,然后编译)
make install        --- 用来安装( 从Makefile中读取指令,安装到指定的位置)

把防火墙关闭,或者允许8080端口访问。

systemctl status firewalld //查看防火墙的状态
systemctl stop firewalld.service //关闭防火墙

编辑启动端口(图片的端口是经过修改的,默认是80端口)


cd /usr/local/nginx/conf
 
vim nginx.conf
 
编辑好之后,按esc退出编辑模式,然后  :wq 进行保存退出

在这里插入图片描述启动nginx

cd /usr/local/nginx/sbin
./nginx

查看进程的运行状态
在这里插入图片描述访问ip地址:端口,验证是否成功
在这里插入图片描述

在这里插入图片描述

1.6Nginx的常用命令

使用nginx操作命令前提条件:必须进入nginx目录下

/usr/local/nginx/sbin

1、查看nginx的版本号

./nginx -v

在这里插入图片描述

2、启动 nginx

./nginx

在这里插入图片描述

3、停止 nginx

./nginx	-s	stop

在这里插入图片描述

4、重新加载 nginx

./nginx -s reload

1.7Nginx的配置文件

1.7.1配置文件的位置

cd /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

1.7.2包含三部分内容

在这里插入图片描述在这里插入图片描述

(1)全局块:配置服务器整体运行的配置指令比如 worker_processes 1;处理并发数的配置

(2)events块:影响 Nginx 服务器与用户的网络连接比如 worker_connections 1024; 支持的最大连接数为 1024

(3)http 块(包含两部分):

  • http 全局块
  • server 块

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

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

每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。

而每个 server 块也分为:

全局 server 块,
多个 locaton 块。
全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。

location 块
一个 server 块可以配置多个 location 块。

这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。

地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

1.9配置反向代理的环境

1.9.1在Linux环境下安装tomcat服务器

我这里已经安装好了,具体流程可以看我这篇文章
https://blog.csdn.net/qq_52166656/article/details/126613657

1.9.2在windows下面配置映射的路径

在这里插入图片描述

在这里插入图片描述如果访问不了有防火墙记得去开启指定端口

firewall-cmd --zone=public --add-port=8080/tcp --permanent

1.8Nginx 配置实例-反向代理实例 1

按照上面通过域名映射ip地址就可以启动tomcat服务器了。
在这里插入图片描述
接着在 nginx 进行请求转发的配置(反向代理配置)
修改目录/usr/local/nginx/conf/下编辑nginx.conf配置文件在这里插入图片描述最后启动 nginx,浏览器地址栏输入 www.123.com,验证页面是否跳转到 Tomcat 的页面。若能跳到 Tomcat 的页面,表示 ngnix 反向代理配置成功。

1.9Nginx 配置实例-反向代理实例 2

1、实现效果

使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中

nginx 监听端口为 9001
访问 http://192.168.200.130:9001/school/ 直接跳转到 127.0.0.1:8080
访问 http:// 192.168.200.130:9001/student/ 直接跳转到 127.0.0.1:8081

首先准备两台tomcat服务器,我在opt目录下创建文件夹,随后开启两台服务器端口号分别为8080与8081
在这里插入图片描述
在tomcat8081文件夹webapp目录下创建文件夹
在这里插入图片描述里面内容随意

同理在tomcat8080文件夹webapp目录下创建文件夹

在这里插入图片描述
里面内容随意
具体配置

找到 nginx 配置文件,进行反向代理配置
在这里插入图片描述开放对外访问的端口号 9001 8080 8081
查看端口
记得开放这几个端口,都是需要用到的
在这里插入图片描述最终测试
在这里插入图片描述

在这里插入图片描述

2.0Nginx 配置实例-负载均衡

浏览器地址栏输入地址 http://127.0.0.1/helloworld,负载均衡效果,平均 8081 和 8082 端口中。

2.0.1准备工作

准备两台 tomcat 服务器,一台 8080,一台 8081。
在两台 tomcat 里面 webapps 目录中,创建名称是 helloworld 简单应用。

2.0.2修改配置文件

在 Nginx 的配置文件中进行负载均衡的配置
在这里插入图片描述随后在两个tomcat的webapp目录下建立相同的文件,意思就是我要去访问这个路径分散给不同的服务器,减小压力
在这里插入图片描述

在这里插入图片描述

访问测试
在这里插入图片描述在这里插入图片描述

2.0.3负载均衡分配策略

负载均衡(load balance)即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。

快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,nginx 就是其中的一个,在 linux 下有 Nginx、 LVS、 Haproxy 等等服务可以提供负载均衡服务,而且 Nginx 提供了几种分配方式 (策略)

轮询
这是 Ngnix 负载均衡默认分配策略。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

加权
weight 代表权,重默认为 1,权重越高被分配的客户端越多。指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。例如:

upstream myserver{
	server 127.0.0.1:8081 weight=8;
	server 127.0.0.1:8082 weight=2;
}
ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:

upstream myserver{
	ip_hash;
	server 127.0.0.1:8081;
	server 127.0.0.1:8082;
}

fair 这是 Ngnix 负载均衡第三方分配策略。按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream myserver{
	server 127.0.0.1:8081;
	server 127.0.0.1:8082;
	fair;
}

可能需要额外安装,否则就抛出异常 [emerg] 7032#7120: unknown directive “fair” in C:\nginx-1.18.0/conf/nginx.conf:38。

2.1Nginx 配置实例(动静分离准备工作)

2.1.1什么是动静分离?

在这里插入图片描述通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,

不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304,如果有修改,则直接从服务器重新下载,返回状态码 200。

2.1.2准备工作

(1)在 liunx 系统中准备静态资源,用于进行访问我在根目录下建立date文件夹里面有www和image文件夹
www文件夹中内容为一个网页
iamge文件夹中的内容为一张图片
在这里插入图片描述

2.1.3具体配置

(1)在 nginx 配置文件中进行配置
在这里插入图片描述

2.1.4最终测试

(1)浏览器中输入地址
在这里插入图片描述
在这里插入图片描述

2.2Nginx 的原理

2.2.1mater 和 worker

在这里插入图片描述
在这里插入图片描述

2.2.2worker 如何进行工作的

在这里插入图片描述

2.2.3一个 master 和多个 woker 有好处

(1)可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作

(2)每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的,继续进行争抢,实现请求过程,不会造成服务中断

2.2.4设置多少个 woker 合适

worker 数和服务器的 cpu 数相等是最为适宜的

2.2.5连接数 worker_connection

第一个:发送请求,占用了 woker 的几个连接数?

答案:2 或者 4 个

第二个:nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的最大并发数是多少?
普通的静态访问最大并发数是: worker_connections * worker_processes /2,

而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections * worker_processes/4。

相关文章:

  • 【027】mongoose V6.4之创建监听套接字fd
  • 《安富莱嵌入式周报》第283期:全开源逆向“爆破”硬件工具,Linux内核6.1将正式引入RUST语言,I3C培训教程,80款市场成熟的电感式位置传感器设计
  • 操作系统实验六 文件管理
  • Bert(Bidirectional Encoder Representations from Transformers)
  • oracle使用rman备份实现异机数据恢复
  • 巩固类和对象的知识点——牛客5道题目
  • 黄老板,给我来个亲笔签名,抽显卡~
  • 儿童头部保护玩具CPC认证亚马逊美国站CPC认证
  • CentOS Docker 安装 常用命令
  • C语言中宏定义的盲区有哪些?
  • springboot之redis缓存探索
  • 高并发系统架构设计之微服务篇: 秒杀系统下的服务拆分
  • jieba
  • 学术英语写作(更新中)
  • 关于穿越机FPV视频果冻效应的讨论
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • C学习-枚举(九)
  • interface和setter,getter
  • Java的Interrupt与线程中断
  • Koa2 之文件上传下载
  • learning koa2.x
  • React16时代,该用什么姿势写 React ?
  • Vue官网教程学习过程中值得记录的一些事情
  • 飞驰在Mesos的涡轮引擎上
  • 服务器之间,相同帐号,实现免密钥登录
  • 计算机常识 - 收藏集 - 掘金
  • 近期前端发展计划
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 聊聊flink的TableFactory
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 设计模式(12)迭代器模式(讲解+应用)
  • 深度学习中的信息论知识详解
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 《天龙八部3D》Unity技术方案揭秘
  • gunicorn工作原理
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​油烟净化器电源安全,保障健康餐饮生活
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #QT(一种朴素的计算器实现方法)
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (一)appium-desktop定位元素原理
  • .bat文件调用java类的main方法
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net core 控制台应用程序读取配置文件app.config
  • .NET 设计模式初探
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .NET学习全景图
  • .NET中winform传递参数至Url并获得返回值或文件