2017-10-20 47 views
0

的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; 
    } 

} 

回答

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