【问题标题】:Nginx reverse_proxy from domainA.it/appA to domainB.it/appB maintining the original url ( domainA/appA )从 domainA.it/appA 到 domainB.it/appB 的 Nginx 反向代理维护原始 url ( domain/appA )
【发布时间】:2026-01-18 08:20:03
【问题描述】:

我需要在我的 nginx 网络服务器(reverse_proxy)中实现这个配置:

我有一个像www.domainA.it 这样的域来响应我的站点,然后我需要从我的www.domainA.it/appA 发布另一个“应用程序”,该应用程序响应另一个域,例如www.domainB.it/appB

我实现的nginx配置是这样的:

server {
    listen       443;
    server_name www.domainA.it domainA.it;
    error_log ssl_error.log;
    access_log ssl_access.log;

    ssl                  on;
    ssl_certificate      my.crt;
    ssl_certificate_key  my.key;
    include /etc/nginx/sec.conf;

    add_header 'Access-Control-Allow-Origin' *;

    location / {
        add_header 'Access-Control-Allow-Origin' *;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass https://my-backend;
    }

    location /appA {
        proxy_pass https://domainB/appB/;
        proxy_http_version                 1.1;
        add_header Access-Control-Allow-Origin *;
        proxy_set_header Host $proxy_host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }
}

使用此配置,我收到如下错误:

https://www.domainA.it/appB/..。 404 未找到

https://www.domainA.it/appB/..。 404 未找到

。 . .

如果我公开相同的位置 www.domainA/appB ,一切正常

我该怎么做??

非常感谢

【问题讨论】:

  • 我只能在你的 nginx 配置中看到appA?请分享整个配置或添加/appB 位置?您想要透明路径还是要将/appAappB 发送到您的后端?通过您的配置,您的后端将收到一个请求 domainB/appB/appA.... .
  • 嗨,配置只有 location / 和 location /appA 。是的,就像透明路径一样,当我调用 www.domainA/appA 时,我希望 proxy_pass 将我发送到 www.domainB/appB 但保持 URL www.domainA/appA。非常感谢
  • www.domainB/appB 是否与www.domainA/appA 在同一台服务器上?
  • 不,在另一台服务器上

标签: nginx reverse-proxy proxypass


【解决方案1】:

我已经通过修改后端上下文解决了这个问题。 使用此配置一切正常:

location /appA {
    proxy_pass https://domainB/appA/;
    proxy_http_version                 1.1;
    add_header Access-Control-Allow-Origin *;
    proxy_set_header Host $proxy_host;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

【讨论】: