拒绝从localhost以外的任何地方访问管理员(使用ngrok)

时间:2017-10-20 10:36:03

标签: nginx

的nginx / 1.12.2

我正在开发一个玩具项目。它将在家中举办。

我没有公共IP。所以,我会用ngrok。 这是一种转发IP的服务:

http://bf3bf81c.ngrok.io -> localhost:80

现在,如果世界上任何地方的用户在浏览器的地址栏中输入http://bf3bf81c.ngrok.io,http请求将被定向到我的计算机并转发到端口80.

我想做的是禁止从本地计算机以外的任何地方访问管理员。

好吧,我失败了。使用ngrok所有请求都好像来自localhost。 所以,这不起作用。

allow 127.0.0.1; 
deny all;

好吧,我无法直接联系localhost:8000 / admin。因为在这种情况下不会使用静态文件。

我发明的唯一方法是:

  1. 杀死ngrok。因此,外面没有人可以访问该网站。

  2. 评论“否认”。

  3. 在管理员工作。

  4. 取消注释deny指令,启动ngrok。

    嗯,这有点笨拙。

    你能建议我一个更优雅的解决方案吗?

    nginx.conf

    server {
        listen       80;
    
        location /admin/ {
            deny all;
        }
    
        location / {
            proxy_pass       http://localhost:8000;
            proxy_set_header Host      $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    
    }
    

1 个答案:

答案 0 :(得分:0)

你可以使用下面的配置

来做到这一点
events {
    worker_connections  1024;
}
http {

    map $host $allow  {
        127.0.0.1 1;
        localhost 1;
        default 0;
    }

server {
   location / {
      ...
    }

   location /admin {
      if ($allow = "0") {
         return 404 "Page Not Found";
      }
      ...
   }


}
}

现在它不适用于ngrok

NGROK