家用住宅主机Linux Docker

如果你手里有一台旧笔记本或树莓派,装了Linux系统(如Ubuntu、Debian),希望用它来统一转发多个内网Web服务到公网,那么用Docker Compose模板搭建一个Nginx反向代理中转站是最省心的方案。
本文全程按零基础可复现的方式写,关键步骤包括编写可复用的 docker-compose.yml 和 Nginx 配置模板,并附带高频报错排查和验证方法。

硬件与系统准备

  • 主机配置:CPU 1核以上,内存1GB以上,硬盘10GB剩余空间。
  • 操作系统:建议 Ubuntu 20.04 / 22.04 或 Debian 11 / 12 的 64 位版本。
  • 网络:主机需要有公网IP(或内网IP + 路由器端口转发),并且防火墙允许 80 和 443 端口入站。

Docker 与 Docker Compose 安装

如果你还没有安装 Docker,按以下命令安装(以 Ubuntu 为例):

# 更新系统包
sudo apt update && sudo apt upgrade -y

# 安装依赖
sudo apt install -y ca-certificates curl

# 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 添加仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 启动并设置开机自启
sudo systemctl enable docker && sudo systemctl start docker

# 验证安装
docker --version && docker compose version
注意:如果你使用非 root 用户,建议将用户加入 docker 组(sudo usermod -aG docker $USER),然后重新登录生效。

编写可复用的 Docker Compose 模板

我们创建一个固定的工作目录,后续所有中转站服务都通过修改这个目录下的配置来复用模板。

mkdir -p ~/proxy-station && cd ~/proxy-station

在目录下创建 docker-compose.yml 文件,内容如下(这是最简模板,后面可以复制修改):

version: '3.8'

services:
  nginx-proxy:
    image: nginx:alpine
    container_name: nginx-proxy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/proxy.conf:ro
      - ./logs:/var/log/nginx

这个模板很简洁:使用 Nginx 的 Alpine 镜像,映射了 80 和 443 端口,挂载了自定义的 nginx.conf 和日志目录。
当你要部署新的中转规则时,只需复制这个目录,修改 nginx.conf 即可。

配置 Nginx 中转规则

在同一个目录下创建 nginx.conf 文件,
下面是一个反向代理示例,
proxy.example.com 的请求转发到内网 IP 为 192.168.1.100:
3000
的服务:

server {
    listen 80;
    server_name proxy.example.com;   # 替换成你的域名

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

如果你有多个内网服务,可以复制多个 server 块。
创建 logs 目录(mkdir logs)以避免权限问题。

启动与检查

cd ~/proxy-station
sudo docker compose up -d
# 或者如果你使用旧版docker-compose:docker-compose up -d

查看运行状态:

docker compose ps

应该能看到 nginx-proxy 容器状态为 Up
访问你的域名或公网IP,应能看到内网服务的页面。

高频问题与避坑指南

Q1:启动后访问不了,显示“Connection refused”?

检查内网服务是否在对应IP和端口上运行。
可以 curl 192.168.1.100:3000 在主机上测试。

Q2:报错“bind: address already in use”?

表示 80/443 端口已被占用。
sudo lsof -i :80 查看哪个进程占用,关闭冲突服务(如 Apache)。

Q3:如何复用模板快速搭建第二个中转站?

复制整个文件夹:cp -r ~/proxy-station ~/proxy-station2,然后修改 nginx.conf 中的 server_nameproxy_pass,并修改 Compose 中的 container_name 和端口映射(比如 81:80 和 444:443)。
启动时进入新目录执行 docker compose up -d

Q4:Docker Compose 命令找不到?

请确认你安装了 docker-compose-plugin 并使用 docker compose(带空格)。
如果系统只有旧版 docker-compose(带横杠),请先安装 sudo apt install docker-compose

避坑说明

  • 不要使用 network_mode: host,否则端口映射可能冲突,且失去隔离性。
  • 如果 SSL 证书需要,建议在 Nginx 容器内用 certbot 或者将证书文件挂载进去,本文不做展开。
  • 确保防火墙(ufw/iptables)放行了 80、443 端口。

效果验证

  1. 在浏览器输入你设置的域名(或公网IP),如果能正常显示内网服务页面,说明中转站搭建成功。
  2. 查看日志:docker compose logs -f 可以实时看到请求记录。
  3. 修改 nginx.conf 添加新的 server 块后,执行 docker compose exec nginx-proxy nginx -s reload 即可生效,无需重启容器。

如果你正在用家用住宅主机搭建中转站,强烈建议先用这个模板跑通基本流程,再根据实际需求调整代理规则。
遇到报错时,优先检查端口占用、内网连通性和 Docker 服务状态。
更多进阶用法(如HTTPS、负载均衡)可以查阅Nginx文档后在本模板基础上扩展。

分享到:
上一篇
外贸站宝塔面板网站服务器多IP绑定防跨境关联账号
下一篇
跨境独立站宝塔面板服务器磁盘IO瓶颈存储优化方案
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意