仅允许从Nginx中的某个URL访问服务/ proxy_pass

时间:2019-08-09 05:46:30

标签: nginx minio

我有一个在https://mywebsite.com上运行的网站。我还在端口9000上运行的同一台服务器上安装了另一个应用程序(Minio)。

注意:通过myServerIP:9000访问Minio时,它将自动转到myServerIP:9000/minio/。如果我尚未登录,那么我将被重定向到myServerIP:9000/minio/login。如果我转到myServerIP:9000/minio/anyRandomPath,我还将被重定向到登录页面或其他默认页面(如果我已经登录)

现在,我想通过地址https://mywebsite.com/files访问Minio,因此我如下设置了nginx

 location /files/ {
        proxy_pass  http://127.0.0.1:9000/minio/;
        proxy_set_header URI_REQUEST_ORIGIN $request_uri;
        proxy_set_header Host            $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Ssl on;
        proxy_set_header X-Forwarded-Proto $scheme;

    }

这不起作用(显示空白页面,标题为“ Minio login”)。当我检查浏览器的控制台时,它说有一条错误消息Uncaught SyntaxError: Unexpected token <,其中包含指向https://mywebsite.com/minio/index_bundle_xxx.js的链接。因此,我尝试在我的nginx.conf中添加另一个位置块:

 location /minio/ {
    proxy_pass  http://127.0.0.1:9000/minio/;
        proxy_set_header URI_REQUEST_ORIGIN $request_uri;
        proxy_set_header Host            $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Ssl on;
       proxy_set_header X-Forwarded-Proto $scheme;

之后,它会按预期工作。但是问题在于,现在我可以同时通过/minio/files

访问Minio

现在如何阻止通过https://mywebsite.com/minio直接访问Minio?

我尝试了一些解决方法,例如在位置栏下方添加:

      location =/minio/ {
        return 404;
   }
      location =/minio/login/ {
              return 404;
   }

但这显然是一种坏方法,而且效率也不高,因为我可以直接转到mywebsite.com/minio/typeAnythingHere重定向到登录页面。

0 个答案:

没有答案