Nginx Docker 部署指南
简介
Nginx 是世界上最流行的 Web 服务器之一,以其高性能、低内存占用和稳定性著称。它常被用作:
- Web 服务器:托管静态文件
- 反向代理:转发客户端请求到后端服务器
- 负载均衡器:在多个后端服务器之间分发流量
- API 网关:统一管理微服务的入口
使用场景
- 静态网站托管
- SPA 应用服务
- API 反向代理
- SSL/TLS 终端处理
- 虚拟主机(多站点)
快速开始
Docker Run 方式
# 最简启动
docker run -d --name nginx -p 80:80 nginx:alpine
# 挂载静态文件
docker run -d --name nginx -p 80:80 -v /var/www/html:/usr/share/nginx/html:ro nginx:alpine
# 自定义配置
docker run -d --name nginx -p 80:80 -v ./nginx.conf:/etc/nginx/nginx.conf:ro nginx:alpine
# 查看日志
docker logs -f nginx
Docker Compose 方式
推荐使用以下目录结构:
project/
├── docker-compose.yml
├── nginx/
│ ├── conf/
│ │ └── nginx.conf
│ ├── certs/
│ │ └── your-domain.pem
│ └── logs/
└── html/
└── index.html
基础配置示例
server {
listen 80;
server_name your-domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /etc/nginx/certs/your-domain.pem;
ssl_certificate_key /etc/nginx/certs/your-domain.key;
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://backend:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 256;
}
性能优化
- 启用 Gzip 压缩
- 配置缓存头
- 启用 HTTP/2
- 使用 CDN 加速静态资源
- 合理配置 worker_connections
常用管理命令
# 测试配置
docker exec nginx nginx -t
# 重新加载配置(不中断服务)
docker exec nginx nginx -s reload
# 停止服务
docker stop nginx
# 查看访问日志
docker exec nginx tail -f /var/log/nginx/access.log
# 查看错误日志
docker exec nginx tail -f /var/log/nginx/error.log
高可用部署
在生产环境中,建议使用 Docker Compose 或 Kubernetes 部署多个 Nginx 实例,配合负载均衡器实现高可用。