Nginx
什么是 Nginx
Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强。Nginx 专为性能优化而开发,在高并发场景下能够支持高达 50,000 个并发连接数的响应。
Nginx 的核心优势
- 高并发高性能:基 于事件驱动架构,采用异步非阻塞方式处理请求
- 反向代理与负载均衡:可将请求分发到多个后端服务器
- 静态资源服务:高效处理静态文件
- 热部署:可以在不停机的情况下升级
快速开始
安装 Nginx
- Docker
- Ubuntu/Debian
- CentOS/RHEL
# 拉取官方镜像
docker pull nginx:latest
# 运 行容器
docker run -d \
--name mynginx \
-p 80:80 \
-v /path/to/html:/usr/share/nginx/html:ro \
-v /path/to/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx
# 更新软件包索引
sudo apt update
# 安装 Nginx
sudo apt install nginx
# 启动 Nginx 服务
sudo systemctl start nginx
# 设置开机自启
sudo systemctl enable nginx
# 安装 Nginx
sudo yum install nginx
# 启动 Nginx 服务
sudo systemctl start nginx
# 设置开机自启
sudo systemctl enable nginx
常用命令
# 测试配置文件语法
nginx -t
# 重新加载配置(无需停止服务)
nginx -s reload
# 优雅停止(等待 worker 进程完成当前请求)
nginx -s quit
# 立即停止
nginx -s stop
# 查看 Nginx 版本
nginx -v
# 查看编译配置参数
nginx -V
配置文件结构
Nginx 配置文件由指令(directives)组成,分为简单指令和块指令两种。
指令类型
简单指令:由指令名称、参数和分号组成
worker_processes 4; # 设置 worker 进程数
pid /var/run/nginx.pid; # 指定 pid 文件路径
块指令:使用大括号 {} 包裹其他指令,不用分号结尾
events {
worker_connections 1024;
}
http {
server {
location / {
# 配置内容
}
}
}
Context 作用域
Nginx 的配置有层级结构,每个块指令形成一个作用域(context):
配置继承规则
子 context 会继承父 context 的配置,子 context 中的同名指令会覆盖父 context 的配置
标准配置文件结构
/etc/nginx/nginx.conf
# ==================== 全局配置 ====================
user nginx; # worker 进程运行用户
worker_processes auto; # worker 进程数,auto 表示自动检测 CPU 核心数
error_log /var/log/nginx/error.log notice; # 错误日志路径和级别
pid /var/run/nginx.pid; # pid 文件路径
# ==================== 事件模块 ====================
events {
worker_connections 1024; # 每个 worker 进程的最大连接数
use epoll; # 使用 epoll 事件驱动模型(Linux 推荐)
}
# ==================== HTTP模块 ====================
http {
# MIME类型配置
include /etc/nginx/mime.types;
default_type application/octet-stream;
# 日志格式定义
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
# 性能优化
sendfile on; # 高效文件传输
tcp_nopush on; # 优化数据包发送
tcp_nodelay on; # 禁用 Nagle 算法,减少延迟
keepalive_timeout 65; # 长连接超时时间
# Gzip 压缩
gzip on;
gzip_vary on;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript
application/json application/javascript application/xml+rss;
# 引入其他配置文件
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
核心模块详解
Core Module (核心模块)
核心模块提供Nginx的基础功能配置:
| 指令 | 说明 | 示例 |
|---|---|---|
worker_processes | worker进程数量 | worker_processes auto; |
worker_connections | 每个worker的最大连接数 | worker_connections 1024; |
error_log |