前言
Nginx
作为 web 服务器
以低内存,高扩展,并且轻松单机支持 1-3w
(据说可以单机 10w,但没有看到具体的机器配置)的并发链接的特性广受开发人员的青睐。
推荐在 linux
系统上使用 Nginx
,这会充分利用 linux
的特性,性能比在 windows
上会更好。
本文主要内容:
- location 的优先级及验证
- root 和 alias 的区别
- Nginx 内置变量介绍
- if
- return
- add_header 添加请求头
- rewrite 转发
- try_files
- 配置 gzip
- 协商缓存和强缓存的介绍和配置
本文内容在 nginx 1.16.1
上测试,Centos 7
4核 8g 内存的虚拟机。
Nginx 安装
Nginx 安装步骤
根据 阿里 CentOS 镜像 配置 yum
源,提高下载速度。
阿里 epel 镜像 配置我们常用软件的包,Nginx
也在其中。
阿里 CentOS 镜像
https://developer.aliyun.com/mirror/centos
阿里 epel 镜像
https://developer.aliyun.com/mirror/epel
# 运行一下命令,更新 yum 源
yum clean all
yum makecache
刷新 yum
仓库信息之后,运行以下命令就可以找到 nginx
yum list | grep nginx
安装 nginx
sudo yum install nginx
配置 nginx
开机启动
sudo systemctl enable nginx
启动 nginx
sudo systemctl start nginx
检查 nginx
是否启动
sudo systemctl status nginx
如果想查看 nginx
包都安装了哪些文件,可以使用
rpm -qvl nginx
Nginx 命令
# 强制立即关闭,不建议做
nginx -s stop
# 正常关闭,会处理已经接到的请求,但不会接受新的请求
nginx -s quit
# 重新加载配置文件
nginx -s reload
# 重新打开日志文件
nginx -s reopen
# 检查配置文件是否有误
nginx -t
# 检查配置文件是否有误,会将配置文件内容打印
nginx -T
# 查看 nginx 版本
nginx -v
# 查看 nginx 版本和编译配置致残
nginx -V
系统开启、关闭、重启、查看 nginx 命令
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl stop nginx
sudo systemctl status nginx
Nginx 简单配置
Nginx 介绍
部署的 Nginx
使用一个 master
进程管理多个 worker
进程。master
进程不处理请求,提供管理服务,包括启动、停止、重载配置文件等服务,通常以 root
用户启动, worker
进程进行请求的处理,一般用非管理员账户启用,worker
进程数量和 cpu 核心设置一直,降低进程切换带来的 cpu
切换。
上下文中的配置是我们重点需要知道的,其余的了解会配置即可。
http
Server 配置
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 80 ;
server_name _;
root /usr/share/nginx/html;
location / {
}
}
}
Server
既配置一个服务。
listen 80
用于配置监听 80
端口的服务。
root
指定静态资源存放的位置。
location 进行资源匹配。location / {}
匹配所有的资源。
listen
和 server_name
配置
匹配规则:
- 先匹配
listen
再匹配server_name
server_name
匹配请求头中的Host
- 当都没有匹配成功,由配置
default_server
的处理 - 以上都没有匹配成功,由第一个配置处理
server {
listen 9099 default_server;
server_name "localhost";
location / {
return 200 "server_name 为 localhost";
}
}
server {
listen 9099;