首页 > 解决方案 > nginx proxy_pass 从根加载资产

问题描述

很抱歉,如果这在过去得到了回答,但我似乎找不到任何对我有用的答案。

我已经在我的 Windows 机器上设置了 nginx,我正在尝试将一些 /subfolders/ 重定向到在其上运行的不同 Web 应用程序。

我的配置尽可能简单:

worker_processes  1;
events {
worker_connections  1024;
}

http {
include       mime.types;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout  65;

server {
    listen       80;
    server_name  my.ip;

    location / {
        resolver 192.168.0.202;
        root   data/www;
        index  index.html;
    }

   location /plex {
   resolver 192.168.0.202;
   proxy_pass http://my.ip:32488;
   }

    location /radarr {
    resolver 192.168.0.202;
   proxy_pass http://my.ip:8787;
    }

    location /sonarr {
    resolver 192.168.0.202;
   proxy_pass http://my.ip:8989;

    }

    location /pihole {
    resolver 192.168.0.202;
   proxy_pass http://my.ip:8081/admin;

    }

  }
}

/subdir/ 的加载工作正常,但所有资产都是从 / 加载的,它按预期返回 404。

我尝试了很多在网上找到的东西,但没有任何效果。

谢谢我失踪了吗?

谢谢!

标签: nginxproxypass

解决方案


可能不是最好/最有效的方法,但通过一些部分测试,我认为以下内容应该有所帮助?基本上检查 http referer 标头以将其重定向到正确的位置。我已经在 nginx 网站上阅读了 IfIsEvil,但使用它进行退货是 100% 安全的。请注意,我尚未对此进行全面测试。

http {
  include       mime.types;
  default_type  application/octet-stream;
  sendfile        on;
  keepalive_timeout  65;
  resolver 192.168.0.202;

  server {
    listen       80;
    server_name  my.ip;
    root   data/www;

    location / {
      if ($http_referer ~* \/plex) {
        return 302 /plex$uri;
      }
      if ($http_referer ~* \/radarr) {
        return 302 /radarr$uri;
      }           
      index  index.html;
    }

   location /plex {
     proxy_pass http://my.ip:32488;
   }

    location /radarr {
      proxy_pass http://my.ip:8787;
    }
  }
}

推荐阅读