Docker run 部署 Nginx 反向代理配置

Nginx 作为高性能的 Web 服务器和反向代理工具,结合 Docker 可以快速实现部署。以下是通过 docker run 命令部署 Nginx 并配置反向代理的完整方法。

拉取 Nginx 镜像

从 Docker Hub 获取官方 Nginx 镜像:

docker pull nginx:latest

运行 Nginx 容器

使用基础命令启动容器并映射端口:

docker run --name my-nginx -p 80:80 -d nginx

  • --name 指定容器名称
  • -p 80:80 将主机 80 端口映射到容器
  • -d 后台运行模式
自定义反向代理配置

创建本地配置文件目录并生成代理配置:

mkdir -p ~/nginx-config
cat > ~/nginx-config/nginx.conf <<EOF
server {
    listen 80;
    location / {
        proxy_pass http://backend-service;
        proxy_set_header Host \$host;
    }
}
EOF

挂载配置启动容器

重新运行容器并挂载配置文件:

docker run --name my-nginx \
  -p 80:80 \
  -v ~/nginx-config:/etc/nginx/conf.d \
  -d nginx

验证代理配置

检查容器日志确认服务状态:

docker logs my-nginx

通过浏览器访问 http://localhost 或使用 curl 测试:

curl -I localhost

动态更新配置

修改本地配置文件后,重载 Nginx 生效:

docker exec my-nginx nginx -s reload

典型反向代理场景配置示例

针对不同后端服务的配置模板:

代理到本地应用
location /api {
    proxy_pass http://host.docker.internal:3000;
}

负载均衡配置
upstream backend {
    server server1:8080;
    server server2:8080;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

常见问题排查

  • 端口冲突:确保主机 80 端口未被占用
  • 权限问题:容器内 Nginx 默认以 www-data 用户运行
  • 配置语法错误:使用 nginx -t 测试配置
docker exec my-nginx nginx -t

生产环境建议

  • 使用 --restart=always 保证服务自愈
  • 通过 Docker Compose 管理多容器编排
  • 为配置文件添加版本控制
  • 设置适当的日志轮转策略

以上方法提供了从基础部署到生产级配置的完整路径,可根据实际需求调整参数。通过 Docker 标准化部署流程,能够显著提升 Nginx 反向代理的维护效率和可靠性。

更多推荐