You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不依赖Host头的Docker多站点反向代理部署方案咨询

可行的单IP无Host头依赖的Docker多站点部署方案

完全可以实现无需多IP、不依赖Host头的多站点部署,以下是两种落地成本最低的方案:

方案1:端口区分不同站点

这是兼容性最好的方案,所有复古浏览器都原生支持IP+端口的访问形式:

  • 为每个站点容器分配不同的VPS对外端口,比如站点A映射8080:80、站点B映射8081:80,用户直接通过[VPS IP]:8080、[VPS IP]:8081即可访问对应站点
  • 也可以前置统一Nginx实例,配置多个listen端口,每个端口对应转发到不同的站点容器,无需配置server_name匹配规则,示例Nginx配置片段:
# 对应站点A
server {
    listen 8080;
    location / {
        proxy_pass http://site-a-container:80;
    }
}
# 对应站点B
server {
    listen 8081;
    location / {
        proxy_pass http://site-b-container:80;
    }
}

方案2:URL路径前缀区分不同站点

如果不想开放多个对外端口,可以用单端口加路径前缀的方式实现:

  • 前置反向代理(Nginx/Traefik都支持),所有请求统一走80端口,根据路径前缀转发到不同站点容器,比如[VPS IP]/site-a转发到站点A、[VPS IP]/site-b转发到站点B
  • 注意处理站内链接适配:可以在反向代理层用sub_filter修改响应内容中的相对路径,也可以调整站点本身的资源引用路径为带前缀的格式或者相对路径,避免静态资源404。Nginx路径转发示例配置:
server {
    listen 80 default_server;
    location /site-a/ {
        proxy_pass http://site-a-container:80/;
        # 替换站内链接适配前缀
        sub_filter 'href="/' 'href="/site-a/';
        sub_filter 'src="/' 'src="/site-a/';
        sub_filter_once off;
    }
    location /site-b/ {
        proxy_pass http://site-b-container:80/;
        sub_filter 'href="/' 'href="/site-b/';
        sub_filter 'src="/' 'src="/site-b/';
        sub_filter_once off;
    }
}

关于Traefik的适配说明

Traefik完全支持你的使用场景,只需要在路由规则中去掉Host匹配规则,换成PathPrefix路径匹配,或者为不同站点配置独立的入口端口即可,逻辑和Nginx完全一致。

内容的提问来源于stack exchange,提问作者Eric.M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:27:04