(使用ngrok)

问题描述:

的nginx/1.12.2(使用ngrok)

我正在开发一个项目玩具拒绝从本地主机以外的任何地方访问管理。它将在家中进行托管。

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

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

现在,如果从世界任何地方在浏览器的地址栏中,用户输入http://bf3bf81c.ngrok.io,http请求将被引导到我的电脑并转发到端口80

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

嗯,我失败了。使用ngrok的所有请求就好像来自本地主机一样。 所以,这是行不通的。

allow 127.0.0.1; 
deny all; 

那么,我不能直接地址到本地主机:8000 /管理员。因为在这种情况下不会使用静态文件。

我发明的唯一方法是:

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

  2. 评论“拒绝”了。

  3. 在admin中工作。

取消注释拒绝指令,启动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; 
    } 

} 

你可以做,用下面的配置

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