Nginx - 反向代理到已经反向代理的位置或双重反向代理?

Nginx - Reverse proxy to an already reverse proxied location or double reverse proxy?

我在centos 7上使用nginx。

我正在将同一 LAN 上的远程 nodejs 服务器反向代理到 nginx root/,如下所示:

    location / {

    proxy_pass http://192.168.1.104:3000/;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

这适用于为我的网站提供服务 - 端口 80 上的所有外部请求都被重写为使用已在 nginx 中配置的 https,例如 nginx 将任何传入的 http 请求转发到 https 并处理重写和转发,以便 nodejs 内容即使尚未在节点应用程序中配置 ssl,也通过 ssl 提供服务。

例如我的站点可以在 https://example.com

访问

我现在想反向代理另一个 nodejs 应用程序,以便它出现在前缀为 https://example.com 的位置,例如:https://example.com/node2/

我已尝试对第二个节点服务器使用以下配置...

    location /node2/ {

    proxy_pass http://192.168.1.100:3000/;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
    }

当我加载https://example.com/node2/url时,显示第二个节点服务器根页面的html但是css的none 、js 或图像已加载,因此页面看起来或无法正常工作,我在浏览器控制台中看到以下内容...

Mixed Content: The page at 'https://example.com/node2/' was loaded over HTTPS, but requested an insecure image 'http://192.168.1.100:3000/assets/graphics/logo.png'. This content should also be served over HTTPS.

Failed to load resource: net::ERR_CONNECTION_CLOSED https://192.168.1.100:3000/assets/css/styles.min.css

对于 css 和 js 资产...所以似乎资产没有发生重定向,并且 html 页面上的任何链接在悬停时不显示 /node2/ 后缀当页面尝试从 https://example.com 而不是 https://example.com/node2/

加载资源时,或在点击时

是否可以根据两个位置的反向代理实际执行我想做的事情,有人可以指出我如何根据需要完成这项工作的正确方向吗?

正在加载的应用程序设置为从服务器根加载资产,而不是服务器根 + /node2/