nginx学习记录

nginx简介

要点:

  1. nginx是一个高性能的http和反向代理服务器,其有很多特点(不间断热部署)。
  2. nginx专为性能优化而开发。
  3. 其有反向代理,负载均衡,动静分离三大特点。

反向代理

正向代理

比如想要看ytb需要使用梯子,这个过程梯子比作代理服务器,在使用代理服务器访问ytb的过程就是正向代理。

反向代理简介

在正向代理中,如果访问ytb需要配置代理服务器,而在反向代理中,只需要将请求发送给反向代理服务器,由反向代理服务器获取数据后,在返回给用户。 此时反向代理服务器和目标服务器对外暴露的就是一个服务器,暴露的是代理服务器的地址,隐藏了真是服务器的ip地址 。

负载均衡

在并发请求比较小的情况下:
基本的请求响应过程
在实际开发中,信息量很大,系统的并发要求越来越高,用以上方式可能会造成系统崩溃,使用负载均衡可以提高并发数量。

使用负载均衡

单个服务器解决不了,那就增加服务器数量,然后将请求分布在各个服务器上,将负载分布到各个服务器的过程,称负载均衡。
负载均衡发送请求

动静分离

为了加快网站的解析速度,把动态页面和静态页面由不同的服务器来解析,降低原来单个服务器的压力。
动静分离
Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx处理静态页面,Tomcat 处理动态页面。

nginx在linux的安装

安装过程

  1. 使用远程连接工具连接linux操作系统。SecureCRT

  2. 安装相关素材
    2-1安装 pcre 依赖
    ①下载:wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
    ②解压压缩文件
    使用命令 tar -xvf pcre-8.37.tar.gz
    ③ cd进入 pcre-8.37 然后./configure 回到 pcre 目录下执行 make && make install
    查看pcre依赖是否安装成功:pcre-config --version
    2-2 安装 openssl 、zlib 、 gcc 依赖
    yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

  3. 安装 nginx

下载网址:http://nginx.org/en/download.html

  • 使用命令解压 tar…

  • ./configure

  • make && make install

进入目录 /usr/local/nginx/sbin/nginx 启动服务

安装后,不能访问的,需要对防火墙进行设置也可以直接关闭防火墙,并防止自启(在练习模式中)
① 查看开放的端口
firewall-cmd --list-all
② 设置开放的端口号
firewall-cmd --add-port=80/tcp --permanent
③ 设置之后需要重启防火墙
firewall-cmd --reload
在这里插入图片描述

Nginx常用命令

使用命令的前提是需要进入 nginx 目录中:cd /usr/local/nginx/sbin

  1. 查看 nginx 版本号 ./nginx -v
  2. 启动 nginx ./nginx
  3. 关闭 nginx ./nginx -s stop
  4. 重新加载nginx ./nginx -s reload //不需要重启服务器,nginx命令也能重新加载5.
  5. 若遇到nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)错误,解决方法:
    sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

配置文件

  1. 位置 vim /usr/local/nginx/conf/nginx.conf
  2. 配置文件中的内容(包含三部分)分别为 全局块、events 块、http 块。

全局块

从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。
在这里插入图片描述
比如:worker_processes 1这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。

events 块

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接。
在这里插入图片描述
events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。
上述例子就表示每个 work process 支持的最大连接数为 1024.

http 块

这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

需要注意的是: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)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

反向代理实例

实现效果

打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页

准备工作

  1. 在 liunx 系统安装 tomcat,使用默认端口 8080
  • tomcat 安装文件放到 liunx 系统中,解压
  • 进入 tomcat 的 bin 目录中,./startup.sh 启动 tomcat 服务器
  • 查看tomcat是否启动:进入logs目录,输入tail -f catalina.out
  1. 对外开放访问的端口
    使用 firewall-cmd --add-port=8080/tcp --permanent 命令将tomcat端口对外进行开放。
  2. 在 windows 系统中通过浏览器访问 tomcat 服务器
    进行以上步骤之后即可在windows浏览器中输入 http://192.168.23.129:8080/访问tomcat首页
    在这里插入图片描述

访问过程分析

在这里插入图片描述

具体配置

第一步 在 windows 系统的 host 文件进行域名和 ip 对应关系的配置
位置如下:C:\Windows\System32\drivers\etc
在这里插入图片描述
添加如下内容:
在这里插入图片描述
测试如下:在windows中的浏览器输入http://www.123.com:8080/在这里插入图片描述
第二步 在 nginx 进行请求转发的配置(反向代理配置)
在nginx的配置文件中
在这里插入图片描述

最终测试

首先启动nginx:cd /usr/local/nginx/sbin ,然后 ./nginx
在windows中的浏览器中输入www.123.com即可直接访问tomcat目录。

反向代理实例2

实现效果

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

nginx 监听端口为 9001,

访问 http://192.168.23.129:9001/test1/a.html直接跳转到 127.0.0.1:8080

访问 http:// 192.168.23.129:9001/test2/a.html 直接跳转到 127.0.0.1:8081

准备工作

1.配置两个tomcat

创建两个文件夹分别为:tomcat8080,tomcat8081。其中第一个对外访问的端口号为8080,第二个为8081。将tomcat8081文件夹中tomcat进行解压,进入conf目录,使用vim server.xml,修改配置文件,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改以上三处配置文件,并保存启动tomcat。
在windows下浏览器中输入192.168.23.129:8080 以及192.168.23.129:8081 进行访问。

2.创建文件夹和测试页面
分别在两个tomcat的webapps目录中创建test1和test2两个文件夹,在两个文件夹中创建一个html文件用于测试访问。

具体配置

(1)找到 nginx 配置文件,进行反向代理配置
进入nginx目录下的conf中,然后vim nginx.conf,加入以下这句话:
在这里插入图片描述

测试结果

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

负载均衡实例

实现效果

浏览器地址栏输入地址 http://192.168.23.129/demo/a.html,负载均衡效果,把请求平均分担到 8080
和 8081 端口中。

准备工作

(1)准备两台 tomcat 服务器,一台 8080,一台 8081

(2)在两台 tomcat 里面 webapps 目录中,创建名称是 demo文件夹,在 demo文件夹中创建

页面 a.html,用于测试.

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

进入 cd /usr/local/nginx/conf目录下的nginx.conf进行修改
在http块中加入:
在这里插入图片描述
在server块中加入:
在这里插入图片描述

测试结果

点击刷新按钮,会切换到不同的服务器
在这里插入图片描述
在这里插入图片描述

nginx 分配服务器策略

第一种 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

第二种 weight
weight 代表权重默认为 1,权重越高被分配的客户端越多。
在 /usr/local/nginx/conf目录下配置nginx.conf中的upstream时:
可以加上weight:
在这里插入图片描述
第三种 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决session共享的问题。
在 /usr/local/nginx/conf目录下配置nginx.conf中的upstream时:
加入 ip_hash
在这里插入图片描述
第四种 fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
在 /usr/local/nginx/conf目录下配置nginx.conf中的upstream时:
加入fair
在这里插入图片描述

动静分离

动静分离从目前实现角度来讲大致分为两种:
一种是纯粹把静态文件独立成单独的域名,放在单独的服务器上,也是目前主流推崇的方案;
另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。
在这里插入图片描述

通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304,如果有修改,则直接从服务器重新下载,返回状态码 200。

准备工作

在 liunx 系统中准备静态资源,用于进行访问:
在根目录下创建testData文件夹,在此文件夹下创建两个子文件夹:www和image,分别在两个子文件夹中创建a.html和1.txt两个静态资源。

具体配置

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

最终测试

(1)浏览器中输入地址
http://192.168.23.129/image/
在这里插入图片描述
http://192.168.23.129/www/a.html
在这里插入图片描述

nginx 原理&优化参数配置

master和worker

master和worker是nginx中的两个进程,启动nginx中可以看到:
在这里插入图片描述
master把任务分配给worker

work如何进行工作的

在这里插入图片描述

  • 一个master&多个workers 的机制的好处

1、有利于nginx -s reload热部署,利用nginx进行热部署操作:
当进行热部署时,已经在工作的worker继续做当前的事情,其他woker进行热部署。当正在工作的worker完成工作后,再去进行热部署。

2、每个work是独立的进程,如果其他的work出现了问题;那其他的workr是独立的,会继续挣强请求,就不会造成服务的中断

3、采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的worker 进程。当然,worker 进程的异常退出,肯定是程序有 bug 了,异常退出,会导致当前 worker 上的所有请求失败,不过不会影响到所有请求,所以降低了风险。

  • 需要设置多少个 worker
    Nginx 同 redis 类似都采用了io 多路复用机制,每个 worker 都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求, 即使是千上万个请求也不在话下。每个 worker 的线程可以把一个 cpu 的性能发挥到极致。所以worker 数和服务器的 cpu数(八核)相等是最为适宜的。设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗。

  • 连接数 worker_connection
    发送一个请求,占用worker几个连接数?
    答案:两个或四个
    解释:1.对于访问静态资源,worker直接向nginx发送请求并返回,一共两个。
    2.对于反向代理,worker还需要tomcat发送请求并返回,一共四个。

搭载高可用集群(未完成)

在nginx请求如下
在这里插入图片描述
在上图过程中nginx服务器可能会出现宕机情况,搭载高可用集群可以解决此问题。

高可用:

1、需要两台+的nginx服务器
2、虚拟ip
3、keepalived

当主服务器挂了,就会自动切换备份服务器访问,这中间需要用到keepalived软件实时监测nginx服务器是否还活着。对外使用虚拟ip进行访问服务器,但虚拟ip实际是不存在的。
在这里插入图片描述

准备工作

(1)需要两台虚拟机 . …搞不来!
在这里插入图片描述
(2)两台服务器都安装nginx和keepalived
安装keepalived:
使用yum命令安装:yum install keepalived -y
安装之后,在 etc 里面生成目录 keepalived ,有文件 keepalived.conf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值