nginx proxy_pass从根加载资产

时间:2018-10-13 07:07:43

标签: nginx proxypass

很抱歉,如果过去曾回答过此问题,但我似乎找不到任何适合我的答案。

我在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。

我尝试了很多在网上找到的东西,但是没有用。

我想念吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

您的根目录是:root data/www;似乎您已经错过了斜杠“ /”。应该是这样的:root /data/www;

答案 1 :(得分:0)

这可能不是最好/最有效的方法,但是通过部分测试,我认为以下内容应该有所帮助?基本上检查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;
    }
  }
}