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

两台NGINX服务器能否串联实现通过域名路径访问容器内APP1

方案可行性结论

该双层NGINX串联的方案完全可落地,不需要调整整体架构,仅需对两台NGINX的配置做少量适配即可实现需求。

具体配置调整步骤

1. 物理机NGINX1配置修改

你需要在原有NGINX1的server块中新增匹配/app1的路由规则,将请求转发到容器暴露的NGINX2端口。假设你的docker-compose将NGINX2的80端口映射到了宿主机的8080端口(也可直接填写NGINX2容器的内部IP),示例配置如下:

server {
    listen       80;
    # 将server_name调整为你实际使用的域名
    server_name mydomain.com;

    access_log  logs/nginx_client_loc-access.log;
    error_log logs/nginx_client_loc-error.log;

    # 新增的app1转发规则
    location /app1 {
        # 注意如果NGINX2中匹配的路径是大写/APP1,需要加重写规则统一路径大小写
        rewrite ^/app1(.*)$ /APP1$1 break;
        # 此处端口替换为你实际映射的NGINX2的宿主机端口,也可直接写容器IP+80端口
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # 原有loki等其他规则保留
    location /loki{
        proxy_pass          http://172.29.161.227:3100;
    }

    # 其余原有配置保持不变
}

2. 容器内NGINX2配置调整

当前你的NGINX2配置已经匹配/APP1路径并转发到内部APP1服务,仅需确认两个点即可:

  • 确保/APP1的路径大小写和NGINX1转发过来的路径一致,如果不想用重写规则,可直接将NGINX2的location改为location /app1
  • 确保docker-compose中NGINX2和APP1服务处于同一个自定义网络,docker内置DNS127.0.0.11可以正常解析到APP1服务的内部IP

验证步骤

配置修改完成后,依次重载两台NGINX的配置:

  • 物理机NGINX执行nginx -s reload
  • 容器内NGINX执行docker exec -it <nginx2容器名> nginx -s reload
    之后直接访问mydomain.com/app1即可正常访问到容器内的APP1服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:54:03