Nginx 使用手册
以下是一份详细的Nginx使用手册大纲,内容涵盖基础配置、高级功能及常见场景,供学习参考!
Nginx 使用手册
目录
- Nginx 简介
- 安装与卸载
- 基础配置与命令
- 核心配置详解
- 虚拟主机配置
- 反向代理与负载均衡
- SSL/TLS 配置
- 安全加固
- 高级配置(缓存、Gzip、WebSocket)
- 日志管理
- 常见问题排查
- 附录:常用模块与资源
1. Nginx 简介
- 什么是Nginx
轻量级、高性能的Web服务器/反向代理服务器,支持高并发、低内存消耗。 核心特性
- 处理静态资源
- 反向代理与负载均衡
- HTTP/HTTPS、HTTP/2支持
- 模块化架构(如
ngx_http_rewrite_module
)
2. 安装与卸载
2.1 安装
Ubuntu/Debian
sudo apt update sudo apt install nginx
CentOS/RHEL
sudo yum install epel-release sudo yum install nginx
macOS (Homebrew)
brew install nginx
2.2 卸载
Ubuntu/Debian
sudo apt purge nginx nginx-common
CentOS/RHEL
sudo yum remove nginx
3. 基础配置与命令
3.1 配置文件结构
- 主配置文件
/etc/nginx/nginx.conf
配置块类型
main
:全局配置(进程数、用户等)events
:连接处理参数http
:HTTP服务配置server
:虚拟主机配置location
:URI路由规则
3.2 常用命令
# 启动
sudo systemctl start nginx
# 停止
sudo systemctl stop nginx
# 重启
sudo systemctl restart nginx
# 重载配置(不中断服务)
sudo systemctl reload nginx
# 检查配置语法
sudo nginx -t
4. 核心配置详解
4.1 main
块配置
user nginx; # 运行用户
worker_processes auto; # 工作进程数(建议设为CPU核心数)
error_log /var/log/nginx/error.log warn; # 错误日志路径
4.2 events
块配置
events {
worker_connections 1024; # 单个进程最大连接数
use epoll; # 高性能事件模型(Linux)
}
4.3 http
块配置
http {
include /etc/nginx/mime.types; # 文件类型映射
default_type application/octet-stream;
access_log /var/log/nginx/access.log; # 访问日志
sendfile on; # 零拷贝传输
keepalive_timeout 65; # 长连接超时时间
gzip on; # 启用Gzip压缩
include /etc/nginx/conf.d/*.conf; # 加载子配置
}
5. 虚拟主机配置
5.1 单域名配置
server {
listen 80;
server_name example.com;
root /var/www/html; # 网站根目录
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
5.2 多域名配置
# 域名1
server {
listen 80;
server_name site1.com;
root /var/www/site1;
}
# 域名2
server {
listen 80;
server_name site2.com;
root /var/www/site2;
}
5.3 Location 匹配规则
前缀匹配
location /images/ { ... }
正则匹配
location ~ \.(jpg|png)$ { ... }
精确匹配
location = /login { ... }
6. 反向代理与负载均衡
6.1 反向代理配置
server {
listen 80;
server_name proxy.example.com;
location / {
proxy_pass http://backend_server; # 后端服务地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
upstream backend_server {
server 192.168.1.100:8080;
server 192.168.1.101:8080;
}
6.2 负载均衡策略
轮询(默认)
upstream backend { server srv1.example.com; server srv2.example.com; }
加权轮询
upstream backend { server srv1 weight=3; server srv2 weight=2; }
IP哈希
upstream backend { ip_hash; server srv1; server srv2; }
7. SSL/TLS 配置
7.1 生成证书
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/nginx/ssl/example.key \
-out /etc/nginx/ssl/example.crt
7.2 HTTPS 配置
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.crt;
ssl_certificate_key /etc/nginx/ssl/example.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# 强制跳转HTTPS
if ($scheme = http) {
return 301 https://$host$request_uri;
}
}
8. 安全加固
隐藏版本号
server_tokens off;
限制访问
location /admin { allow 192.168.1.0/24; deny all; }
防止DDoS
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; location / { limit_req zone=one burst=20; }
9. 高级配置
9.1 缓存配置
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;
server {
location / {
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
}
}
9.2 Gzip 压缩
gzip_types text/plain text/css application/json;
gzip_min_length 1000;
gzip_proxied any;
9.3 WebSocket 支持
location /ws/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
10. 日志管理
访问日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
- 日志分割(使用
logrotate
)
创建/etc/logrotate.d/nginx
配置定期归档。
11. 常见问题排查
检查配置语法
nginx -t
查看错误日志
tail -f /var/log/nginx/error.log
验证端口监听
netstat -tulpn | grep nginx
12. 附录
- 官方文档
Nginx Documentation 常用模块列表
ngx_http_ssl_module
ngx_http_rewrite_module
ngx_http_proxy_module
本手册持续更新,建议结合实践操作加深理解。遇到复杂场景时,可参考官方文档或社区资源。