linux企业实战 --nginx

1. nginx

  • Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
  • Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。
  • 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
  • ginx相较于Apache\lighttpd具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名。
  • 在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于Epoll的高效事件模型kqueue。
  • Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C语言进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
  • 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

2 下载并安装nginx

在官方网站下载源代码,编译安装:
开源版网址:nginx.org
商业版网址:nginx.com

安装依赖软件、下载gd-devel包,并安装
在这里插入图片描述安装nginx
在这里插入图片描述在这里插入图片描述检查是否安装成功
在这里插入图片描述

3 Nginx搭建静态web服务器

conf 目录中存放了nginx相关的配置文件
html 目录是状认提供的web服务的"根目录"
logs 目录是nginx日志的存放目录。
modules 目录中存放了-些模块会用到的库。
sbin 目录中存放了nginx的二进制文件, 我们需要使用nginx=进制文件启动nginx

查看是否编译成功
在这里插入图片描述启动nginx
在这里插入图片描述
nginx创建了一个nginx服务器,开启80端口

[root@server1 nginx]# netstat -antlupe|grep 80

在这里插入图片描述nginx的发布页面
在这里插入图片描述编辑/usr/local/nginx/conf/nginx.conf文件
在这里插入图片描述

 从上述语法配置示例可以看出,.上述示例可以分为几个逻辑部分,http部分、server部分、
location部分,或者说,上述示例可以分为几个逻辑块,http块、server块、location块,每个"配块"都是使用大括号"{
} "作为分界线的,而且,从缩进可以看出,它们是有层级关系的,http中可以配置多个server, 一个server中可以配置
多个location,我们知道,nginx最基础的功能就是用来提供http服务,所以,跟http有关的公共配置,可以放在http块中,http块中又可以配置多个server

那么server代表了什么呢?我们在一台主机中安装了nginx,那么能不能让这台nginx主机同时提供多个web
服务呢?答案是肯定的,每一个server就代表一个http服务,我们可以同时配i多个server,以便同时提供多个http,不同的server可以使用不同的配置
,写入到某个server块中的配重只对对应的http服务生效,如果多个server存在共同的公用配置,则可以将共同的配写在http块中,以便多个server共这些配置,一个server
块中又可以有一个或多个location

location又是什么意思呢?当我们访问一个网络上的资源时,都是通过url访问的,你可以把location当做urI的一部分,此处,我们使用如下url作为示例:
http://www. westos.org/westos/1591 .上述链接中的"
/westos"部分就是一个location,我们可以通过location将url中的路径和服务器的某个目录建立起关联关系,此处不用纠结,在用到它时我们再来细说

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

4 Nginx反向代理

server1(172.25.42.1) 	nginx服务器
server2(172.25.42.2) 	web服务端
真机(172.25.42.250) 	测试端

做软链接
在这里插入图片描述编辑server1(nginx配置文件)
在这里插入图片描述
在这里插入图片描述在serevr2上安装httpd
在这里插入图片描述测试
在这里插入图片描述
2.

同一个ip调度同一个后端
在这里插入图片描述127.0.0.1:80 让本机作为backup
在这里插入图片描述在html/index.htnl中写入server1,做测试用
在这里插入图片描述

负载均衡的实现

在这里插入图片描述在这里插入图片描述在这里插入图片描述
注意:下线非常快,上线需要等待几秒!!!

健康状况检查
在这里插入图片描述

5 nginx常用命令

命令 含义
-h 或 nginx -? 查看nginx命令都有哪些可用的选项
nginx -v 使用"-v"选项(小写v)可以查看inginx的版本信息
nginx -V 使用"-V"选项(大写V)可以查看当前nginx的编译信息
nginx -t 使用"-t"选项或者"-T"选项可以测试nginx.conf配置文件中是否存在语法错误
nginx -s 向正在运行的nginx主进程发送信号,信号的可用值有stop, quit, reopen, reload时
  nginx -v # 可以查看nginx的版本信息
  nginx -V # 可以查看当前nginx的编译信息,在最开始的文章中我们就介绍过,编译安装nginx时,有很多“可选模块”可供我们使用,我们可以选择安装或步安装对应的可选模块,同时,我们还可以选择在编译安装时,设置一些编译选项,比如安装目录、各种文件的目录、编译器选项等,这些信息都属于编译信息。
  nginx -t # 使用-t或者-T选项可以测试nginx.conf配置文件中是否存在语法错误,我们提到过nginx.conf中的配置指令需要以分号结尾,如果没有以分号结尾,会在启动nginx时报语法错误,其实,在启动nginx服务之前,我们就可以使用“nginx -t”命令对nginx.conf文件进行语法检查,如果配置文件中存在语法错误,那么对应的错误信息会输出,如果配置语法没有问题,则不会出现报错信息。
  nginx -s xxx # -s选项的作用就是项正在运行的nginx进程发送信号,比如:当nginx服务已经启动,我们想要停止nginx服务,则可以使用“nginx -s stop”命令停止nginx服务,表示向nginx进程发送stop信号,使用-s选项还能发送quit、reopen、reload。
  quit信号:quit作用也是用于停止nginx服务,quit信号和stop信号的区别在于,nginx进程收到stop信号以后会立即停止服务,而收到quit信号后,不会接收新的请求,但是会先处理完已经接收的链接请求,处理完这些请求之后再停止服务。
  reload信号:作用时再不停止服务的情况下重载配置文件。nginx -s reload
  reopen:可以使nginx进程重新打开日志文件,以便实现日志文件分割的效果

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

6 模块、配置指令和模块间的关系

配置多个location
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述所配置的location下有张图片显示
在这里插入图片描述优先级
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

7 Nginx进程概述

8 配置指令root和alias的区别

在nginx中,我们可以通过location块与root指令结合的方式,将"url"与"服务器路径"建立起对应关系,location块负责匹配url,root指令负责将匹已到的url与服务器中某个具体目录对应起来,其实,除了root指令,还有另-个指令也能实现类似的功能,它就是alias指令,root指令和alias指令都能将urI和服务器路径进行对应,但是,它们之间又存在一些区别

location /demo {
root /opt/test;
}

location块匹配的url为"/demo",
root指令的路径为"/opt/test"

那么,根据上述配置,当我们访问"/demo"这个urI时,实际上访问的到底是服务器中的哪个路径呢?答案是"/opt/test/demo"路径那么,我们来举一反三试试,配置上述location块后,当我们访问"/demo/test1/nginx.jpg"这个url时,我们访问的是哪个目录中的文件呢?你肯定已经想到了正确答案,答案就是"/opt/test/demo/test1/nginx.jpg"

location /demo1 {
alias /opt/test;
}

如你所见,alias指令对应的值也是一个路径,当alias指令与location块结合时,它们会怎样建立url与服务器路径的对应关系呢?答案如下:上例配表示,当我们访问"/demo1/nginx1.jpg"时,其实就是在访问服务器的"/opt/test/nginx1.jpg",也就是说当我们使用alias时,location的url是与alias的路径完全对等的。
看到此处,root指令和alias指令的区别就很明显了。root指令会将location块的"url路径"带入到" root指令路
径"中,将带入后的路径作为"最终路径",使用"最终路径"与urI建立对应关系。alias指令则直接将location块的"url路径"与" alias指令路径"建立对应关系

9 5种io模型

  1. 什么是 IO

I0 (Input/Output,输入/输出)即数据的读取(接收)或写入(发送)操作,通常用户进程中的一个完整IO分为两阶段:用户进程空间<–>内核空间、内核空间<–>设备空间(磁盘、网络等)。I0有内存IO、网络IO和磁盘I03种,通常我们说的I0指的是后两者
LINUX中进程无法直接操作I/O设备,其必须通过系统调用请求kernel来协助完成I/O动作;内核会为每个I/O设备维护一个缓冲区。
对于一个输入操作来说,进程I0系统调用后,内核会先看缓冲区中有没有相应的缓存数据,没有的话再到设备中读取,因为设备I0-般速度较慢,需要等待;内核缓冲区有数据则直接复制到进程空间
在这里插入图片描述
所以,对于一个网络输入操作通常包括两个不同阶段:
( 1 )等待网络数据到达网卡→读取到内核缓冲区,数据准备好;
( 2)从内核缓冲区复制数据到进程空间

《UNIX网络编程》说得很清楚,5种IO模型分别是阻塞I0模型、非阻塞lO模型、I0复用模型、信号驱动的IO模型、异步IO模型

1 阻塞IO模型

进程发起I0系统调用后,进程被阻塞,转到内核空间处理,整个IO处理完毕后返回进程。操作成功则进程获取到数据

小明去火车站买票,排队三天买到一张退票。
耗费:在车站吃喝拉撒睡3天,其他事一件没干
在这里插入图片描述

2 非阻塞IO模型

进程发起I0系统调用后,如果内核缓冲区没有数据,需要到IO设备中读取,进程返回一个错误而不会被阻塞;进程发起IO系统调用后,如果内核缓冲区有数据,内核就会把数据返回进程。对于上面的阻塞IO模型来说,内核数据没准备好需要进程阻塞的时候,就返回一个错误,以使得进程不被阻塞

小明去火车站买票,隔12小时去火车站问有没有退票,三天后买到一张票。
耗费:往返车站6次,路上6小时,其他时间做了好多事
在这里插入图片描述

3 IO复用模型

多个的进程的I0可以注册到一个复用器( select)上,然后用一个进程调用该select,select会 监听所有注册进来的I0 ;
如果select没有监听的I0在内核缓冲区都没有可读数据,select调用进程会被阻塞;而当任一10在内核缓冲区中有可数据时,select调用就会返回;
而后select调用进程可以自己或通知另外的进程(注册进程来再次发起读取IO,读取内核中准备好的数据典型应用: select、poll、 epoll三种方案,nginx都可以选择使用这三个方案

select, poll、 epollLinux中 l0复用的实现方式主要有select、poll和epoll:
Select:注册IO、阻塞扫描,监听的I0最大连接数不能多于FD_ SIZE;
Poll:原理和Select相似,没有数量限制,但IO数量大扫描线性性能下降;
Epoll : 4件驱动不阻塞, mmap实现内核与用户空间的消息传递,数量很大,Linux2.6后内核支持

  1. select/poll
    小明去火车站买票,委托黄牛,黄牛三天内买到票,然后打遍所有人要买票人的电话找到小明,小明去火车站交钱领票。
    耗费:往返车站2次,路上2小时,黄牛手续费100元,等待通知3小时
    2.epoll
    小明去火车站买票,委托黄牛,黄牛买到后即通知小明去领,然后小明去火车站交钱领票。
    耗费:往返车站2次,路上2小时,黄牛手续费100元,无需打电话
    在这里插入图片描述

4 信号驱动IO模型

当进程发起一个IO操作,会向内核注册一个信号处理函数,然后进程返回不阻塞;当内核数据就绪时会发送- -个信号给进程,进程便在信号处理函数中调用IO读取数据

小明去火车站买票,给售票员留下电话,有票后,售票员电话通知小明,然后小明去火车站交钱领票。
耗费:往返车站2次,路上2小时,免黄牛费100元,无需打电话

在这里插入图片描述

5 异步IO模型

当进程发起一个IO操作,进程返回(不阻塞),但也不能返回果结;内核把整个I0处理完后,会通知进程结果。如果I0操作成功则进程直接获取到数据

小明去火车站买票,给售票员留下电话,有票后,售票员电话通知小明并快递送票上门。
耗费:往返车站1次,路上1小时,免黄牛费100元,无需打电话
在这里插入图片描述

发布了136 篇原创文章 · 获赞 1 · 访问量 1644

猜你喜欢

转载自blog.csdn.net/qq_45652989/article/details/104518904