2017-10-20 27 views
0

nginx/1.12.2Refuser l'accès à l'administrateur, excepté depuis localhost (en utilisant ngrok)

Je développe un projet de jouet. Et il sera hébergé à la maison.

Je n'ai pas d'adresse IP publique. Donc, je vais utiliser ngrok. Il est un service qui transmet les adresses IP comme ceci:

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

Maintenant, si partout dans le monde une des entrées utilisateur http://bf3bf81c.ngrok.io dans la barre d'adresse de leur navigateur, demande http seront adressées à mon ordinateur et transmis au port 80

Ce que je voudrais faire est d'interdire l'accès à l'administration de n'importe où sauf mon ordinateur local.

Eh bien, j'ai échoué. Avec ngrok toutes les demandes proviennent de localhost. Donc, cela ne fonctionnera pas.

allow 127.0.0.1; 
deny all; 

Eh bien, je ne peux pas directement adresser à localhost: 8000/admin. Parce que les fichiers statiques ne seront pas utilisés dans ce cas.

La seule façon que je l'ai inventé est:

  1. Tuez ngrok. Donc, personne de l'extérieur ne peut accéder au site.

  2. Commentaire "deny" out.

  3. Travailler dans l'admin.

Décommentez la directive deny, démarrez ngrok.

Eh bien, c'est un peu maladroit.

Pourriez-vous me proposer une solution plus élégante?

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

} 

Répondre

0

Vous pouvez le faire en utilisant config ci-dessous

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"; 
     } 
     ... 
    } 


} 
} 

Et ça ne marchera pas sur ngrok maintenant

NGROK