Nginx 学习笔记
文章目录
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。