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

时间:2018-10-10 12:38:50

标签: nginx reverse-proxy nginx-reverse-proxy

我正在尝试使用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文件中的重写或返回命令可用于重定向浏览器,但是这些似乎都无法解决我的问题。 。或者我可能误解了如何使用它们,因为在尝试从./new url加载时看到“重定向过多”错误页面。

我真的很感激如何解决此问题的任何指示。

谢谢。

1 个答案:

答案 0 :(得分:0)

您需要修改您的应用程序,使其根路径位于url之前,nginx不会更改代理内容。