Docker 部署 Nginx 完全指南 🐳

📋 目录导航
🐳 一、Docker 部署 Nginx
1. 创建部署目录和配置文件 📁
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| mkdir -p /mnt/mydisk/home/nginx/{html,logs,conf.d,keyfile,nginx}
cat > /mnt/mydisk/home/nginx/nginx/nginx.conf <<'EOF' user www-data; worker_processes auto; pid /run/nginx.pid; error_log /var/log/nginx/error.log warn; include /etc/nginx/modules-enabled/*.conf;
events { worker_connections 1024; use epoll; multi_accept on; }
http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; 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; gzip on; gzip_vary on; gzip_min_length 1024; gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } EOF
cat > /mnt/mydisk/home/nginx/docker-compose.yml <<'EOF' services: nginx: container_name: nginx image: nginx:alpine restart: unless-stopped network_mode: bridge ports: - "80:80" - "443:443" volumes: - ./keyfile:/etc/nginx/keyfile:ro - ./conf.d:/etc/nginx/conf.d:ro - ./html:/usr/share/nginx/html:rw - ./logs:/var/log/nginx:rw - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro environment: - TZ=Asia/Shanghai privileged: false healthcheck: test: ["CMD", "nginx", "-t"] interval: 30s timeout: 10s retries: 3 EOF
|
2. 拉取镜像并启动容器 🚀
1
| cd /mnt/mydisk/home/nginx && docker-compose up -d
|
🚀 二、使用 Nginx
1. 基本使用和测试 🧪
1 2 3 4 5 6 7 8 9 10 11
| docker exec nginx nginx -t
docker exec nginx nginx -s reload
docker logs nginx
netstat -tuln | grep ":80\|:443"
|
2. 常用命令 📋
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| docker stop nginx
docker start nginx
docker restart nginx
docker exec -it nginx sh
docker stats nginx
tar -czf nginx-backup-$(date +%Y%m%d).tar.gz /mnt/mydisk/home/nginx/conf.d /mnt/mydisk/home/nginx/nginx/nginx.conf
|
🌐 三、Nginx 反向代理配置
1. 创建 Nginx 配置文件 🔧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| cat > /mnt/mydisk/home/nginx/conf.d/reverse-proxy.conf <<'EOF' server { listen 80; server_name example.com; return 301 https://$host$request_uri; }
server { listen 443 ssl http2; listen [::]:443 ssl http2;
server_name example.com;
ssl_certificate /etc/nginx/keyfile/cert.pem; ssl_certificate_key /etc/nginx/keyfile/key.pem; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384; ssl_prefer_server_ciphers off; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; location / { proxy_pass http://后端服务IP:端口; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; proxy_buffering on; proxy_buffer_size 4k; proxy_buffers 8 4k; proxy_cache off; } location /robots.txt { return 200 "User-agent: *\nDisallow: /"; } } EOF
|
2. 测试并重载 Nginx 🔄
1 2 3 4 5 6 7 8
| docker exec nginx nginx -t
docker exec nginx nginx -s reload
docker restart nginx
|
🔧 四、容器维护命令
1. Docker Compose 命令 🐳
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| cd /path/to/your/project
docker-compose down
docker-compose pull
docker-compose up -d
docker-compose up -d <service_name>
docker-compose ps
docker-compose logs
docker-compose logs -f
docker-compose logs <service_name>
docker-compose down && \ docker-compose pull && \ docker-compose up -d && \ docker image prune -f
|
2. Docker 容器命令 📦
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| docker ps -a --format "{{.Names}}"
docker ps
docker stop <container_name> docker start <container_name> docker restart <container_name>
docker rm <container_name> docker rm -f <container_name>
docker exec -it <container_name> sh docker exec -it <container_name> bash
docker exec -u 0 -it <container_name> sh
docker exec <container_name> ls -la
docker inspect <container_name> docker stats <container_name>
docker logs <container_name> docker logs -f <container_name> docker logs --tail 100 <container_name> docker logs -t <container_name>
|
3. Docker 镜像管理 📀
1 2 3 4
| docker images docker rmi <image_name:tag> docker image prune -f docker image prune -a -f
|
🌐 启航网络,连接无限
通过本文档,你已经成功使用 Docker 部署了 Nginx 服务器,并掌握了反向代理配置和容器维护的核心技能。现在,你可以:
🚀 高效部署 快速搭建高性能的 Web 服务器和反向代理,为各种应用提供稳定的网络服务
🔒 安全加固 配置 SSL 加密和安全头部,保护你的网站和应用程序免受常见网络攻击
📊 灵活扩展 利用 Docker 的容器化优势,轻松扩展和管理多个 Nginx 实例
🌍 全球访问 通过反向代理实现内网服务的公网访问,打破网络边界限制
Nginx 不仅是网络的桥梁,更是现代互联网架构的基石。愿这份指南帮助你构建稳定、高效、安全的网络服务,让你的应用在数字世界中畅通无阻。
从现在开始,用 Nginx 搭建你的网络帝国,连接每一个数字节点!🌐
📌 持续学习:建议关注 Nginx 官方文档 和 博客,深入了解高级配置和性能优化技巧。
🐛 反馈与互助:使用中如有疑问或建议,可前往 Nginx 社区论坛 或相关技术社区寻求帮助。
祝你部署顺利,网络畅通!🎉