NGINX
Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新
1)nginx访问流程
2)nginx的进程
Nginx有两个进程:
master process:主进程(守护进程),用来管理工作进程。
worker process:工作进程,用来处理用户的请求。
3)nginx 与 apache 的区别
Apache是同步多进程模型,一个连接对应一个进程,而Nginx是异步的,多个连接(万级别)可以对应一个进程。
Nginx轻量级,抗并发,处理静态文件好。
Apache超稳定,对PHP支持比较简单,Nginx需要配合其他后端用,处理动态请求有优势,建议使用前端Nginx抗并发,后端apache集群,配合起来会更好。
Nginx负载均衡、反向代理、处理静态文件优势。
Nginx处理静态请求的速度高于apache,同时并发性比较好,CPU内存占用低,因此可以应对千万级别的网络请求。
4)I/O 模型相关概念
同步/异步(消息反馈机制):关注的是消息通信机制,即调用者在等待一件事情的处理结果时,被调用者是否提供完成状态的通知。
同步:synchronous,被调用者并不提供事件的处理结果相关的通知消息,需要调用者主动询问事情是否处理完成
异步:asynchronous,被调用者通过状态、通知或回调机制主动通知调用者被调用者的运行状态
阻塞/非阻塞:关注调用者在等待结果返回之前所处的状态
阻塞:blocking,指IO操作需要彻底完成后才返回到用户空间,调用结果返回之前,调用者被挂起,干不了别的事情。
非阻塞:nonblocking,指IO操作被调用后立即返回给用户一个状态值,而无需等到IO操作彻底完成,在最终的调用结果返回之前,调用者不会被挂起,可以去做别的事情。
5)事件驱动模型
Nginx支持在多种不同的操作系统实现不同的事件驱动模型,但是其在不同的操作系统甚至是不同的系统版本上面的实现方式不尽相同,
主要有以下实现方式:
二.编译安装Nginx
1)将nginx 的安装包放到 opt 目录下,并解压缩
2)下载编译环境
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
3)新建nginx用户
4)编译模块设置环境
5)修改文件权限
conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,其他的.conf则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params两个文件,配置文件一般都有个样板配置文件,是文件名.default结尾,使用的使用将其复制为并将default去掉即可。
html目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web文件是默认的错误页面提示页面。
logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比如/var/logs/nginx里面。
sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能
6)创建nginx自启动文件
7)systemctl daemon-reload 重新加载配置,并启动服务
三.nginx信号的使用
1)信号
nginx 命令支持向其发送信号,实现不同功能
nginx 当做单独命令使用有以下选项
如果遇到nginx无法作为命令使用的情况:
nginx -s
nginx -s stop 立即关闭nginx
nginx -s quit 优雅退出,不影响业务
nginx -s reload 重新加载
nginx -g 指定配置
nginx -g 'user zhangsan;' 已张三身份运行,默认是以nginx身份
nginx -g 'daemon off;' 前台运行命令
nginx -t 检查语法
nginx分隔日志
1.先将原来的日志文件改名
2.再创建一个日志文件
3.去输入命令 nginx -s reopen将日志生成转到新建立的文件中
平滑升级
1.下载安装包
2.解压
3.编译安装
4.只make,不要make install
5.进入nginx的objs文件夹查看版本号
6.将老版本nginx 进行备份
7.拷贝objs 中的nginx 到/app/nginx/sbin 中
8.输入指令发送升级信号
9.优雅关闭老版本的worker进程
10.新版本的 pid 号
11.去另外一台主机上查看是否更改成功版本
四.nginx配置详细解释
主配置文件位置:/usr/local/nginx/conf/nginx.conf
/usr/local/nginx/conf/ 目录下:
nginx.conf 是主配置文件
nginx.conf.default 是主配置文件的备份文件
主配置文件中有六个主要模块:
1、全局块:全局配置,对全局生效。
2、events块:配置影响Nginx服务器与用户的网络连接。
3、http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。
4、server块:配置虚拟主机的相关参数,一个http块中可以有多个server 块。每个 server 块就相当于一个虚拟主机。。
5、location块:用于配置匹配的url,一个server块中可以有多个location块。
6、upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。
配置文件由指令和指令块构成
每条指令以;分号结尾,指令与值之间以空格符号分隔
pid /apps/run/nginx.pid
指令已{}达括号将多条指令组织在一起且可以嵌套指令块
include语句允许组合多个配置文件以提升可维护性
1)全局配置
nginx多模块
核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能
标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等
可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如:Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等
邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持
Stream服务模块: 实现反向代理功能,包括TCP协议代理
第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等
隐藏版本或修改版本
修改成自己想要的名字
make && make install
修改启动的进程数
cpu 与 work 进程绑定
将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。
nginx进程优先级
调试work进程打开的文件的个数
2)event 事件
3)http 设置
server块构建虚拟主机
2.去到文件夹下创建自己的自配置文件
3.分别写好配置文件
4.创建数据文件夹
5.创建页面
6.去第二台机器修改 /etc/hosts 文件做测试
alias别名
location
access 模块 四层控制
# 可以去源码包中 过滤 access模块 自带 不想要可以 without 去掉
验证模块
1.安装http-tools包,使用htpasswd命令
2.创建用户和密码
3.想往文件中再加入文件名的话直接htpasswd -b就行了-c是新建文件夹的意思
4.去到自己的子配置文件中去设置将文件位置输出出来
自定义错误界面
我们 可以改变 默认的错误页面,同时也可以用指定的响应状态码进行响应,
可用位置:http, server, location, if in location
格式:
error_page code ... [=[response]] uri;
页面错误代码
error_page 固定写法
code 响应码
= 可以将响应码转换
uri 访问连接
日志位置存放
可以将自己的子配置文件日志分离
检测文件是否存在
在子配置文件中配置
长连接
http 基于 tcp 协议 先要 三次握手然后 再传输数据
一次三次握手 下载多个资源
一次三次握手下载一个资源
相关设置
作为下载服务器配置
autoindex on | off;
用户上传资料
client_max_body_size 1m;