nginx介绍
在国内主要用的是nginx
在国外依然用的是apache
定义:
高性能、轻量级的web服务软件
特点;
一般在企业中为了保持服务器稳定,并发量一般在20000个左右,占用内存大概在2M左右,加上keep-alive 大概在3M左右
nginx主要功能
1、静态文件服务,nginx可以直接提供静态服务,例如 HTML、CSS、JavaScript、图像等,它能够高效地处理并响应静态文件的请求
2、反向代理:Nginx 可以作为反向代理服务器,将客户端的请求转发给后端的多个服务器,可以实现负载均衡、高可用性和故障转移,提供更好的性能和可靠性
反向代理的核心:客户端在请求时通过代理服务器,会把请求的的流量按照轮询算法转发到后台不同的服务器,实现负载均衡和高可用
3、处理动态内容:nginx处理动态内容能力很差,例如:PHP-FPM、Node.js、Java 、python应用服务器等,需要配合以上的来配合使用,它可以代理请求,发送到后端的动态服务器,动态服务器处理完之后,nginx来吧动态请求相应给后端
4、实现SSL/TLS 加密支持:Nginx 支持通过 SSL/TLS 对客户端和服务器之间的通信进行加密,HTTPS的加密方式,数字证书的验证机制
5、虚拟主机:Nginx 支持配置多个虚拟主机,使得可以在同一台服务器上托管多个域名或站点,每个虚拟主机可以拥有独立的配置和资源
6、URL 重写和重定向,Nginx 支持灵活的 URL 重写和重定向规则,可以对请求的 URL 进行修改和重定向,实现 URL 的美化和重定向策略
7.缓存功能:nginx自带缓存功能,get请求才能获取缓存,get 请求才能获取缓存,get web 服务器的内容
8、日志功能:Nginx 能够记录访问日志和错误日志,可以记录请求的详细信息,包括访问时间、请求路径、IP、响应状态等,帮助进行故障排查和性能分析。
系统日志记录在/var/log/messages,职业日志access.log和error.log
access:记录的是谁访问我了,都是访问成功的日志记录,
error : 也记录了谁访问了我,但记录的是访问失败的记录
nginx 应用场景
1、静态服务器 (图片、视频服务、文本)
2、动态服务
3、反向代理,负载均衡
4、缓存服务
系统识别nginx的操作命令:
nginx -t:检查配置文件是否配置正确
nginx -v : 查看nginx的版本号
nginx -s : 向主进程传输的信号:停止、开启、重启、重新加载
nginx -c : 设置配置文件的默认路径
常用的信号符
信号符结合kill命令
只要是“kill”后面只能跟PID号
kill -USR1
kill -s HUP
kill -s QUIT
kill -s WINCH
安装 nginx服务
安装依赖包
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
3、创建运行用户、组
useradd -M -s /sbin/nologin nginx
编译安装Nginx
cd /opt
tar zxvf nginx-1.22.0.tar.gz -C /opt/
加载安装包
服务安装完成后四个文件的功能:
1、conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件
2、html: 保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件
3、logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比如/var/logs/nginx里面。
4、sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能
默认配置文件做备份
50x.html : html是nginx默认的错误页面的内容
logs: 保存日志文件的位置
[Unit] 部分描述了单元的用途,以及文档的位置。
它还规定了在 Nginx 启动前需要启动的服务的依赖关系和顺序。
[Service] 部分包含了 Nginx 服务的配置,包括服务类型(在这种情况下是 forking)、PID 文件的位置
以及启动、重新加载和停止服务的命令。
最后,[Install] 部分指定了服务安装的目标。
ExecReload=/bin/kill -s HUP $MAINPID #相当与restart
ExecStop=/bin/kill -s TERM $MAINPID #相当与stop
修改vim nginx.conf内容
nginx配置文件nginx.conf
全局配置的六个模块简介:
全局块:全局配置,对全局生效;
stream : 四层走的是tcp或则udp流量,不能写在http当中需要写在全局当中
events块:配置影响 Nginx 服务器与用户的网络连接;
http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;配置代理、缓存,虚拟机,反向代理,只能是http的请求才可以写http模块中
upstream : 反向代理,指定服务器名命令,七层基于IP和端口,http协议只能在http模块中
server块:包含在http模块中,不能单独设置,配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块;
location块:用于配置匹配的 uri ;包含在server当中,也不能单独设置
proxy 模块是 Nginx 的核心模块之一,用于实现反向代理功能。在location中,它允许将客户端的请求代理到后端的服务器,并将响应返回给客户端。proxy 模块支持 HTTP、HTTPS、FastCGI、uWSGI、SCGI 等多种协议。通过配置 proxy_pass 指令,可以指定代理的后端服务器地址。
nginx是通过alias设置虚拟目录,在nginx的配置中,alias目录和root目录是有区别的
location常见配置指令,root、alias、proxy_pass(反向代理配置)
1、root 作为拼接,root指定的目录和location匹配的URI之间做的一个拼接,例如/opt/ky30/这两个路径都真实存在,而且都是目录;并且在URI目录里要有web文件
2、alias; 匹配指定路径下的指定目录
root标签可以使用重定向
alias不可以设置重定向
其他区别:
1、 alias 只能作用在location中,而root可以存在server、http和location中。
2、 alias 后面必须要用 “/” 结束,否则会找不到文件,而 root 则对 ”/” 可有可无。
面试题
Nginx 是如何实现高并发的?
1.nginx自身代码的问题,大量的底层代码进行优化,同时自带了一个功能模块,“ epoll ”模块支持高并发
2、nginx也是一个master进程控制多个work进程master负责收集和分发请求,work是实际执行者,每一个请求进来,master就拉起一个worker进程负责处理这个请求。同时master进程也负责监控woker的状态,保证高可靠性woker进程一般设置为跟cpu核心数一致或则两倍,work处理请求过程中只受内存大小的限制,所以可以处理多个请求,再加上nginx本身就是轻量级的服务,处理请求是占用的内存,本身就少,所以可以起到大并发处理的能力,
实验
1访问状态统计
修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置
重启服务
网页测试
2基于用户名和密码的访问控制
生成用户密码认证文件
yum install -y httpd-tools ----httpasswd是工具,要先安装
更改属主,修改权限
添加认证配置文件
基于IP地址访问
拒绝访问