如何对 nginx 反向代理位置执行重写或重定向

How to enforce a rewrite or redirect for an nginx reverse proxyed location

我正在尝试使用 Nginx 来反向代理我主网站子目录中的一个 node.js 应用程序,该应用程序也被反向代理。

/ 反向代理按预期工作,但第二个位置不加载任何资产...

我正在使用以下配置:

    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;  
    }

    location /new/ {

    proxy_pass http://192.168.1.65: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;  

    }

这与我访问 ./new url 时一样有效,我可以看到 node.js 应用程序的默认页面,但没有图像、css 或 js 资产已加载。

当我检查浏览器控制台时,我可以看到加载错误,显示浏览器正在尝试从 / 位置加载资产...

此外,加载到 ./new 的页面上显示的链接也指向 / 位置,因此它们也不起作用...

几天来我一直在想办法解决这个问题,发现 nginx.conf 文件中的重写或 return 命令可用于重定向浏览器,但 none 这些似乎可以解决我的问题...或者我可能误解了如何使用它们,因为我在尝试从 ./new url 加载时看到 'too many redirects' 错误页面。 ..

非常感谢任何有关如何解决此问题的指示。

谢谢。

您需要修改您的应用以将其根路径添加到 url,nginx 不会更改代理内容。