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

如何用Nginx配置同域名下不同路径对应多个Docker容器化应用

Nginx路径反向代理配置方案

前置准备

  • 确认3个Docker容器的端口映射规则:启动容器时绑定本地回环地址端口,避免直接对外暴露,参考启动命令如下:
    one应用容器:docker run -d -p 127.0.0.1:4001:容器内部服务端口 --name app-one 你的one应用镜像
    同理将two应用绑定本地4002端口、three应用绑定本地4003端口,确认直接访问127.0.0.1:4001、127.0.0.1:4002、127.0.0.1:4003可正常打开对应应用。

修改Nginx配置

找到当前在用的Nginx站点配置文件,一般路径为/etc/nginx/sites-available/自定义站点配置名或/etc/nginx/conf.d/default.conf,在已有的server块中补充三个路径的反向代理规则即可,完整参考配置如下:

server {
    listen 80;
    server_name example.com;

    # 原有根路径落地页配置,直接保留即可
    location / {
        proxy_pass http://127.0.0.1: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;
    }

    # example.com/one 对应应用配置
    location /one {
        # 替换为你one应用容器映射的本地端口
        proxy_pass http://127.0.0.1:4001;
        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;

        # 如果是Vue等前端单页应用(使用history路由模式),需新增下方重写规则去掉路径前缀;Spring后端应用无需添加
        # rewrite ^/one/(.*)$ /$1 break;
    }

    # example.com/two 对应应用配置
    location /two {
        # 替换为你two应用容器映射的本地端口
        proxy_pass http://127.0.0.1:4002;
        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;
        # 根据应用类型按需添加rewrite规则
    }

    # example.com/three 对应应用配置
    location /three {
        # 替换为你three应用容器映射的本地端口
        proxy_pass http://127.0.0.1:4003;
        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;
        # 根据应用类型按需添加rewrite规则
    }
}

应用侧适配(必做,否则会出现静态资源/接口404问题)

  • Vue类前端应用:修改打包配置的publicPath为对应路径前缀,示例vue.config.js配置:
    module.exports = {
      publicPath: '/one/'
    }
    
    对应two、three应用分别修改为/two/、/three/即可
  • Spring类后端应用:在application配置文件中添加上下文路径配置,示例yaml配置:
    server:
      servlet:
        context-path: /one
    
    对应two、three应用分别修改为/two、/three即可

配置生效

  • 执行nginx -t校验配置语法是否正确,返回success提示说明配置无误
  • 执行systemctl reload nginx重载Nginx配置,无需重启服务即可生效

内容的提问来源于stack exchange,提问作者Gandalf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:27:04