如何为Laravel保护/ netdata或Netdata?

问题描述

我正在关注the following guide for installing Netdata on Laravel Forge。基本上,它将打开用于Netdata的端口1999,并将其重定向/netdata目录。

location = /netdata {
  return 301 /netdata/;
}

location ~ /netdata/(?<ndpath>.*) {
  proxy_redirect off;
  proxy_set_header Host $host;

  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_http_version 1.1;
  proxy_pass_request_headers on;
  proxy_set_header Connection "keep-alive";
  proxy_store off;
  proxy_pass http://netdata/$ndpath$is_args$args;

  gzip on;
  gzip_proxied any;
  gzip_types *;
}
upstream netdata {
  server 127.0.0.1:19999;
  keepalive 64;
}

我已经定义了auth中间件,并且我将如何只允许通过auth中间件的人访问/netdata路线?该指南建议仅将其限制为一个IP地址,但这是不可能的,因为我四处走动。

解决方法

尽管我没有Laravel或Forge的经验,但根据documentation的介绍,您必须在中间件中定义该功能。本质上,您只指示中间件在成功认证的情况下执行重定向。

也许您可以指示Laravel将所有连接(如果身份验证成功)重定向到NGINX端点(/ netdata),您将其配置为仅允许来自localhost的端点。因此,除非用户通过Laravel中间件进行身份验证,然后从该中间件重定向到Nginx服务器,否则该用户将无法访问/netdata

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...