首页 > 解决方案 > Nginx - 如何在保持上下文的同时将特定的 url 代理传递到不同的主机?

问题描述

我有一个相当简单的 nginx conf 用于前端和后端应用程序:

server {
        listen 8080;
        server_name nginx_server;
        port_in_redirect off;

        location / {
                root /dir/html;
                index index.html index.htm;
        }

        location  /api/ {
                proxy_pass         http://my-api:8080/;
        }
}

我的主要主机是https,这很好用。当我点击时https://myapp.com/api/a/b/c,我的后端会收到/a/b/c,这就是我想要的。

现在,我想将特定 /api 上下文的请求发送到不同的服务器:

 location  /api/a/b {
                rewrite /api/(.*) /$1 break;
                proxy_pass         http://another-api:8080;
        }

所以现在,如果我打https://myapp.com/api/a/b?param=1我想打http://another-api:8080/a/b?param=1https://myapp.com/api/a/b/c/d应该打http://another-api:8080/a/b/c/d

当我使用 Postman 进行测试时,这是有效的,但由于某种原因,在 Chrome 中,当我的前端应用程序尝试点击时,https://myapp.com/api/a/b/c/d我得到一个控制台错误:(blocked:mixed-content)

我怎样才能解决这个问题?

标签: nginx

解决方案


推荐阅读