第一部分:Nginx 核心概念解析
什么是 Nginx?
Nginx (Engine X) 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。它以其稳定性、丰富的功能集、简单的配置文件和低系统资源消耗而闻名。
高性能
采用事件驱动(Event-driven)架构,能够支持数万并发连接。
低内存
在 10,000 个非活跃 HTTP 保持连接下,仅消耗约 2.5MB 内存。
热部署
Master-Worker 模式允许在不停止服务的情况下升级软件或修改配置。
核心架构:Master-Worker 模型
Nginx 启动后会产生一个 Master 进程和多个 Worker 进程。Master 负责管理 Worker(如加载配置、平滑重启),而 Worker 负责处理实际的客户端请求。
第二部分:核心功能与应用场景
1. 静态内容服务
Nginx 处理静态文件(HTML, CSS, Images)的速度极快。这是最基础的用法。
server {
listen 80;
server_name example.com;
location / {
root /var/www/html; # 指定根目录
index index.html;
}
}
2. 反向代理 (Reverse Proxy)
Nginx 接收客户端请求,并将其转发给后端的应用服务器(如 Node.js, Python, Java)。客户端只知道 Nginx,不知道后端的具体结构。
location /api {
proxy_pass http://localhost:3000; # 转发请求
proxy_set_header Host $host;
}
3. 负载均衡 (Load Balancing)
当后端有多台服务器时,Nginx 可以将流量分发给它们,提高系统的可用性和扩展性。默认使用轮询(Round Robin)算法。
upstream myapp {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
location / {
proxy_pass http://myapp;
}
}
第三部分:关键配置指令与语境
Nginx 的配置文件通常位于 /etc/nginx/nginx.conf。它的结构是分块(Block)的。
server
定义一个虚拟主机。可以根据端口或域名来区分。
location
根据请求的 URI 进行匹配,决定如何处理请求(是读取文件还是转发)。
upstream
定义一组后端服务器,用于负载均衡。
第四部分:实用命令与调试
常用命令
# 启动 Nginx
sudo systemctl start nginx
# 测试配置文件语法是否正确(非常重要!)
sudo nginx -t
# 重载配置(不中断服务)
sudo nginx -s reload
# 停止服务
sudo systemctl stop nginx
调试建议
当出现问题时(如 404, 502 错误),首先检查日志。
- 访问日志:
/var/log/nginx/access.log- 记录谁访问了什么。 - 错误日志:
/var/log/nginx/error.log- 记录启动错误或处理请求时的异常。
常见错误:502 Bad Gateway
通常意味着 Nginx 无法连接到后端应用服务器。请检查后端服务是否启动,端口是否正确。