目录
一、概述
Nginx是开源、高性能、高可靠的Web服务器和反向代理服务器。
特点 |
---|
高并发、高性能 |
模块化架构使得它的扩展性非常好 |
异步非阻塞的事件驱动模型(epoll)这点和Node.js相似 |
相对于其他服务器来说他可以连续几个月也不需要重新启动服务器使得他具有高可靠性 |
热部署、平滑升级 |
完全开源,生态繁荣 |
作用 |
---|
http服务期。可以独立提供http服务。可做网页静态服务器。 |
虚拟主机。可以实现在一台服务器虚拟出多个虚拟服务器 |
反向代理,负载均衡 |
配置安全管理,搭建API网关,对每个接口服务器进行拦截 |
静态服务 | 代理服务 | 安全服务 | 流行架构 |
---|---|---|---|
浏览器缓存 | 协议类型 | 访问控制 | Nginx+PHP(Fastcgi_pass)LNMP |
防资源盗用 | 正向代理 | 访问限制 | Nginx+Java(Proxy_Pass)LNMT |
资源分类 | 反向代理 | 流量限制 | Nginx+Python(uwsgi_pass) |
资源压缩 | 负载均衡 | 拦截攻击 | |
资源缓存 | 代理缓存 | 拦截异常请求 | |
跨域访问 | 动静分离 | 拦截SQL注入 |
Master进程(主进程) | 特点 |
---|---|
管理者,负责读取配置、管理 Worker 进程、处理信号(如重启、平滑升级) | 单进程,不直接处理请求,仅监听端口并分配连接给 Worker 进程。 |
Worker进程(工作进程) | |
实际处理客户端请求的工作单元。 | 1.数量可通过配置(worker_processes )设置,通常等于 CPU 核心数以避免上下文切换开销。2.每个 Worker 进程独立监听端口,采用异步非阻塞方式处理请求,支持高并发(单个 Worker 可处理数万并发连接) |
二、yum安装与编译安装
安装方式 | yum安装 | 编译安装 |
---|---|---|
配置文件目录 | /etc/nginx/ | /usr/local/nginx/conf |
临时数据文件目录 | /var/lib/nginx | |
日志文件目录 | /var/log/nginx | /usr/local/nginx/logs |
访问页面根目录 | /usr/shara/nginx/html | /uer/local/nginx/html |
自定义配置文件目录 | /etc/nginx/conf.d | /usr/local/nginx/conf/conf.d |
默认配置文件目录 | /etc/nginx/default.d | /usr/local/nginx/conf/default.d |
命令存放目录 | /usr/local/nginx/sbin |
编译安装
配置文件
核心命令
命令 | 作用 |
---|---|
systemctl enable nginx | 开机自动启动 |
systemctl disable nginx | 关闭开机自动启动 |
systemctl start nginx | 启动Nginx |
systemctl stop nginx | 停止Nginx |
systemctl restart nginx | 重启Nginx |
systemctl reload nginx | 重新加载Nginx |
systemctl status nginx | 查看 Nginx 运行状态 |
ps -elf | grep [n]ginx | 查看Nginx进程,但是不会显示grep本身的进程 |
kill -9 pid | 根据上面查看到的Nginx进程号,杀死Nginx进程,-9 表示强制结束进程 |
nginx -s reload | 向主进程发送信号,重新加载配置文件,热重启 |
nginx -s reopen | 重启 Nginx |
nginx -s stop | 快速关闭 |
nginx -s quit | 等待工作进程处理完成后关闭 |
nginx -T | 查看当前 Nginx 最终的配置 |
nginx -t | 检查配置是否有问题 |
nginx -c configfilePath | 指定配置文件启动nginx |
Nginx信号
信号名 | 含义 |
---|---|
stop | 直接停止 |
quit | 优雅的退出:有人在访问不会结束进程 |
reopen | 分割日志 |
reload | 重新加载配置文件 |
term | 快速停止nginx进程,可能会中断现有连接,与stop信号类似。 |
usr1 | 重新打开日志文件,用于日志切割或日志重定向,与reopen信号类似。 |
usr2 | 平滑地升级nginx可执行文件。 |
hup | 重新加载配置文件,优雅地应用新配置,与reload信号类似。 |
winch | 当nginx以master/worker工作模式运行时,重新生成worker进程以适应新的配置。 |
usr3 | 向worker进程发送自定义信号。 |
启动Nginx
三、HTTPS访问配置(自签名)
3.1、SSL简介
SSL (Secure Sockets Layer)安全套接层。主要任务是提供私密性,信息完整性和身份认证。
3.2、SSL协议介绍
SSL是一个不依赖于平台和应用程序的协议,位于TCP/IP协议与各种应用层协议之间,为数据通信提高安全支持。
3.3、传输过程
1.发送数字证书,获取可信的public key
2.通过public key发送对称密钥,接收方用私钥解密
3.通信双方使用仅仅对方可知的对称密钥进行加密传输
3.4、HTTPS工作流程
1 | 客户端(浏览器)访问网站 |
---|---|
2 | 网站服务器返回HTTPS使用的CA证书 |
3 | 浏览器验证CA证书是否为合法证书 |
4 | 验证通过,证书合法,生成一串随机数并使用公钥(证书中提供的)进行加密 |
5 | 发送公钥加密后的随机数给网站服务器 |
6 | 网站服务器拿到密文,通过私钥进行解密,获取随机数(公钥加密,私钥解密,反之也可以) |
7 | 网站服务器把要发送给浏览器的内容,使用随机数进行加密后传输给浏览器(对称加密) |
8 | 此时浏览器可以使用随机数进行解密,获取到服务器的真实传输内容 |
3.5、生成证书
[root@nginx1 ~]#openssl genrsa -out rsa1024.key 1024
[root@nginx1 ~]#openssl req -new -key rsa1024.key -out rsa1024.csr
[root@nginx1 ~]#openssl x509 -req -days 365 -in rsa1024.csr -signkey rsa1024.key -out rsa1024.crt
3.6、自签名证书
四、location配置
4.1、作用
配置路径
4.2、匹配
匹配规则 | |
---|---|
精准匹配 | = |
正则匹配,区分大小写 | ~ |
正则匹配,不区分大小写 | ~* |
匹配到即停止搜索 | ^~ |
匹配优先级
= > ^~ > ~ > ~* > 不带任何字符 “/”。
4.3、配置方案
cd /usr/local/nginx /conf
vim nginx.conf
(查看文件)
(查看图片)
(1)location中的反斜线,代表后面的名字是一个文件夹名
location /test {
...
} 优先查找目录,若目录不存在则查找同名文件
location /test/ {
...
} 只查找目录
(2)return
停止处理请求,直接返回响应码或重定向到其他URL;执行return指令后,location中后续指令将不会被执行。
例如:
location / {
return 404 "pages not found";
} #直接返回状态码
五、rewrite配置
根据指定正则表达式匹配规则,重写 URL 。应用场景: 新老域名的更替
5.1、语法
rewrite 正则表达式 要替换的内容 [flag]
5.2、可写入字段
server、location、if
示例:
rewirte /images/(.*\.jpg)$ /pic/$1; # $1是前面括号(.*\.jpg)的反向引用
flag可选值含义 |
---|
last: 重写后的 URL 发起新请求,再次进入 server 段,重试 location 的中的匹配 |
break :直接使用重写后的 URL ,不再匹配其它 location 中语句 |
redirect :返回 302 临时重定向 |
permanent :返回 301 永久重定向。 |