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

时间:2018-10-09 23:54:12

标签: node.js nginx proxy reverse-proxy nginx-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,js或图像,因此该页面看起来或工作不正常而且我在浏览器控制台中看到以下内容...

  

混合内容:“ https://example.com/node2/”页面已加载   通过HTTPS,但请求了不安全的图像   'http://192.168.1.100:3000/assets/graphics/logo.png'。此内容   也应该通过HTTPS提供服务。

  

无法加载资源: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/

的资源

就反向代理两个位置而言,是否真的可以做我想做的事情,并且有人可以向我指出如何根据需要获得正确工作的正确方向吗?

1 个答案:

答案 0 :(得分:0)

正在设置要加载的应用程序,以从服务器根目录而不是服务器根目录+ / node2 /

加载资产。