← 返回首页
🌐

Nginx🐳 Docker

🔖 版本: v1.25📦 大小: 55MB📅 添加: 2025-03-15
创建时间:2026-08-17
#Web服务器#反向代理#负载均衡#开源
镜像名称nginx:1.25-alpine
镜像大小💿 54MB
支持架构AMD64ARM64ARMv7
Docker Hub🔗 访问

📦 个人构建容器镜像(123云盘分享)

Nginx 自定义配置镜像🔒 私有
my-nginx:1.0-custom

添加了自定义模块和配置的 Nginx 镜像,支持 WAF、缓存加速等功能

💿 62MBAMD64ARM64
docker build
# 基于官方镜像添加自定义配置
docker build -t my-nginx:1.0-custom .

# 多架构构建
docker buildx build --platform linux/amd64,linux/arm64 -t my-nginx:1.0-custom --push .
🔗 打开链接
Nginx + 宝塔面板集成版🔒 私有
bt-nginx:stable

集成宝塔面板常用配置的 Nginx 版本,一键部署

💿 78MBAMD64
docker build
# 基于宝塔环境的 Nginx 镜像
docker build -t bt-nginx:stable -f Dockerfile.bt .
🔗 打开链接

🔌 常用端口说明

端口服务说明快速访问
80HTTP 服务HTTP 默认端口,用于普通 Web 访问🔗 访问
443HTTPS 服务HTTPS 加密端口,用于安全 Web 访问🔗 访问

⚙️ 环境变量

变量名描述默认值必填
TZ时区设置UTC可选
NGINX_HOST配置默认主机名localhost可选

🐳 Docker 运行命令

docker run
docker run -d --name nginx -p 80:80 -v /path/to/html:/usr/share/nginx/html:ro -v /path/to/nginx.conf:/etc/nginx/nginx.conf:ro nginx:1.25-alpine

📁 创建目录结构

mkdir
# 创建 Nginx 目录结构
mkdir -p /opt/nginx/{html,conf,certs,logs}
mkdir -p /opt/nginx/conf/conf.d

💡 说明:执行以上命令创建容器所需的目录结构,用于数据持久化、配置文件挂载等。

🏗️ 容器构建命令

docker build
# Dockerfile 示例 (添加自定义模块)
cat > Dockerfile << 'EOF'
FROM nginx:1.25-alpine
# 安装额外工具
RUN apk add --no-cache curl tzdata
# 复制自定义配置
COPY conf/nginx.conf /etc/nginx/nginx.conf
COPY conf/conf.d/ /etc/nginx/conf.d/
# 复制静态文件
COPY html/ /usr/share/nginx/html/
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]
EOF

# 构建镜像
docker build -t my-nginx:1.25 .

# 运行自定义镜像
docker run -d --name nginx -p 80:80 -p 443:443 my-nginx:1.25

💡 说明:如果需要自定义 Dockerfile 构建镜像,使用以上命令。记得替换镜像名称和标签。

🔒 Caddy HTTPS 代理配置

Caddyfile
# 使用 Caddy 为 Nginx 后端提供 HTTPS
your-domain.com {
  # 自动 HTTPS (Caddy 自动申请证书)
  reverse_proxy localhost:80
  
  # 或者直接代理到 Nginx 容器
  # reverse_proxy nginx-container:80
}

# 多域名配置示例
# your-domain.com, www.your-domain.com {
#   reverse_proxy localhost:80
# }

💡 说明:

  1. 将以上内容保存为 Caddyfile
  2. 替换 your-domain.com 为实际域名
  3. 修改 localhost:端口 为容器实际端口
  4. 使用 caddy runcaddy start 启动
  5. Caddy 会自动申请和续期 HTTPS 证书

📝 Docker Compose 配置

docker-compose.yml
version: '3.8'
services:
  nginx:
    image: nginx:1.25-alpine
    container_name: nginx
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./html:/usr/share/nginx/html:ro
      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./nginx/certs:/etc/nginx/certs:ro
      - ./nginx/logs:/var/log/nginx
    environment:
      - TZ=Asia/Shanghai
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 10s
      retries: 3

使用说明:

  1. 将以上内容保存为 docker-compose.yml
  2. 在文件所在目录执行 docker compose up -d
  3. 停止服务:docker compose down

🐙 Podman 兼容

Podman

Podman 是一个开源的容器管理工具,与 Docker CLI 完全兼容。以下是对应的 Podman 命令:

运行容器
podman run
podman run -d --name nginx -p 80:80 -v /path/to/html:/usr/share/nginx/html:ro -v /path/to/nginx.conf:/etc/nginx/nginx.conf:ro nginx:1.25-alpine
使用 Compose
启动服务:podman compose up -d
停止服务:podman compose down
查看状态:podman compose ps
查看日志:podman compose logs -f

💡 提示:Podman 无需 root 权限运行,更加安全。所有 docker 命令都可以直接替换为 podman

❓ 常见问题与解决方案

常见问题

配置Nginx Docker 镜像如何持久化配置?
通过 volume 挂载配置文件目录,例如 `-v ./nginx/conf:/etc/nginx/conf.d`。这样容器重启后配置不会丢失。
配置如何在 Docker 中部署 HTTPS?
推荐使用 Caddy 或 Nginx Proxy Manager 等反向代理工具自动管理证书。也可以手动挂载 SSL 证书文件。
故障Nginx 容器占用内存大怎么办?
使用 alpine 版本镜像减小体积。可以通过 `--memory` 参数限制容器内存使用,如 `docker run --memory=256m nginx:alpine`。
使用如何查看 Nginx 容器日志?
使用 `docker logs -f nginx` 查看实时日志。可以通过 `--tail` 参数指定显示的行数。
安装Nginx 容器中如何添加自定义模块?
需要基于官方镜像构建自定义镜像,在 Dockerfile 中使用 `./configure --with-模块名` 编译添加。或使用 OpenResty 等替代版本。

解决方案

  • 端口冲突: 修改端口映射 `docker run -p 8080:80` 将宿主机 8080 映射到容器 80
  • 权限问题: 确保挂载目录权限正确 `chmod -R 755 ./html`
  • 性能优化: 使用 Nginx alpine 版本,启用 gzip 压缩和缓存
  • HTTPS 部署: 使用 Caddy 或 certbot 自动申请和续期证书
  • 数据备份: 定期备份 Nginx 配置文件和静态资源目录

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;
}

性能优化

  1. 启用 Gzip 压缩
  2. 配置缓存头
  3. 启用 HTTP/2
  4. 使用 CDN 加速静态资源
  5. 合理配置 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 实例,配合负载均衡器实现高可用。