宝塔+Docker建站通用配置模板(宝塔Nginx反向代理Docker,最稳妥方案)

思路:域名解析到服务器 IP → 宝塔新建站点(不装 PHP、不建数据库)→ Nginx 反向代理到 Docker 容器端口 规则:Docker 只映射非 80/443 端口,所有 80/443、SSL 全由宝塔接管

一、前置规范(必看)

  1. 宝塔 LNMP 正常运行,原有 PHP 网站不动
  2. Docker 容器映射格式:宿主机端口:容器内部端口
    • Web 容器统一宿主机端口:127.0.0.1:80xx(示例:8081、8082),不要直接 - p 80:80
    • MySQL 容器:127.0.0.1:3307、3308...
  3. 容器启动禁止加 --net=host

宝塔+Docker建站通用配置模板(宝塔Nginx反向代理Docker,最稳妥方案)

二、示例:Docker 部署一个 WEB 项目

1、容器启动命令示例(Nginx/PHP 容器通用)

# 示例:项目映射本机127.0.0.1:8081,容器内80端口
docker run -d \
--name web-demo \
-p 127.0.0.1:8081:80 \
-v /www/docker/demo:/usr/share/nginx/html \
nginx

-p 127.0.0.1:8081:80:只监听本机,外网无法直接访问,全部走宝塔 Nginx 转发

三、宝塔站点配置

步骤 1:宝塔添加站点

域名填:demo.xxx.com

  • PHP 版本:纯静态
  • 数据库:不创建
  • SSL:在宝塔申请免费证书(https 由宝塔处理)

步骤 2:网站配置→反向代理

① HTTP 配置(宝塔 Nginx 配置文件)

location / {
    proxy_pass http://127.0.0.1:8081;
    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;
}

② HTTPS 配置(开启 SSL 后,伪静态 / 配置)

宝塔开启 SSL 后,默认 443 监听,继续用上面反向代理代码,完整 HTTPS 模板:

server
{
    listen 80;
    server_name demo.xxx.com;
    # http强制跳转https(可选)
    return 301 https://$host$request_uri;
}

server
{
    listen 443 ssl http2;
    server_name demo.xxx.com;
    ssl_certificate    /www/server/panel/vhost/cert/demo.xxx.com/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/demo.xxx.com/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

    location / {
        proxy_pass http://127.0.0.1:8081;
        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;
    }
}

四、Docker 连接数据库两种方案

方案 A:Docker 项目使用宝塔本地 MySQL(推荐省事)

宝塔 MySQL 开放内网访问,Docker 内数据库配置:

数据库地址:宿主机内网IP(如172.17.0.1或服务器本机IP)
端口:3306
账号密码:宝塔创建的数据库账号

方案 B:Docker 自建 MySQL 容器

docker run -d --name mysql-demo \
-p 127.0.0.1:3307:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

项目数据库配置:127.0.0.1:3307

五、多个 Docker 站点复用模板

域名Docker 本机端口
a.xxx.com8081
b.xxx.com8082
每个域名单独建宝塔站点,反向代理对应本机端口即可。

六、常见问题修复

  1. 后端获取不到真实访客 IP:配置里必须带 X-Real-IP、X-Forwarded-For
  2. 项目跳转 http/https 错乱:添加 proxy_set_header X-Forwarded-Proto $scheme;
  3. 外网可以直接访问 8081 端口:启动容器必须写127.0.0.1:8081:80,不能只写8081:80

七、如果你是 PHP 容器(fpm 模式)

宝塔 Nginx 不反向代理 http,反向代理 fpm 端口,示例容器: -p 127.0.0.1:9001:9000 宝塔站点 PHP 改为「调用自定义 FPM」:127.0.0.1:9001

 
老罗悟道
  • 本文由 老罗悟道 发表于2026 年 6 月 4 日 10:26:05
  • 转载请务必保留本文链接:https://www.130510.com/2764.html
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证