63 votes

nginx sans nom de serveur et en utilisant uniquement une adresse IP statique ?

Il s'agit de mon premier déploiement d'application web et je rencontre toutes sortes de problèmes.

Je suis actuellement en train de mettre en place une implémentation nginx + gunicorn pour l'application Django, mais cette question concerne principalement les configurations nginx. Pour un peu de contexte - nginx recevrait les connexions et le proxy vers le serveur local de gunicorn.

dans les configurations de nginx, où il est dit server_name dois-je en fournir un ? Je n'ai pas l'intention d'utiliser des noms de domaine, mais seulement l'adresse IP externe de mon réseau (elle est statique) et le numéro de port à écouter.

Je souhaite que lorsque j'accède à quelque chose comme http://xxx.xxx.xxx.xxx:9050 Je serais en mesure d'obtenir le site.

Voici l'exemple de code sur lequel je baserai les configurations à titre de référence.

   server {
        listen   80;
        server_name WHAT TO PUT HERE?;

    root /path/to/test/hello;

    location /media/ {
        # if asset versioning is used
        if ($query_string) {
            expires max;
        }
    }
    location /admin/media/ {
        # this changes depending on your python version
        root /path/to/test/lib/python2.6/site-packages/django/contrib;
    }
    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8000/;
    }
        # what to serve if upstream is not available or crashes
        error_page 500 502 503 504 /media/50x.html;
     }

50voto

Shane Madden Points 112034

server_name prend par défaut la forme d'une chaîne vide, ce qui n'est pas grave ; vous pouvez l'exclure complètement.

Une autre approche courante pour répondre au besoin de "ne pas mettre de nom" est l'utilisation de server_name _;

Votre http://xxx.xxx.xxx.xxx:9050 L'URL ne fonctionnera pas avec cette configuration, cependant ; vous n'écoutez que sur le port 80. Vous devez ajouter un listen 9050; également.

12voto

Joe Points 197

Nom_serveur _ ; n'est pas un joker, voir ici :

http://blog.gahooa.com/2013/08/21/nginx-how-to-specify-a-default-server

il suffit de spécifier la directive default_server pour un accès par ip uniquement (voir http://nginx.org/en/docs/http/request_processing.html )

server {
    listen 1.2.3.4:80 default_server;
    ... 
    }

4voto

gansbrest Points 725

Si vous voulez que votre application réponde sur le port 9050 sans nom d'hôte spécifique, vous pouvez ignorer server_name, ce n'est pas nécessaire puisque Nginx résout d'abord l'entrée listen et ensuite server_name s'il est présent :

server {
   listen 9050;

   .....
}

Plus de détails ici : Nginx server_name et son fonctionnement

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X