web-dev-qa-db-fra.com

nginx sans nom_serveur et utilisant uniquement une adresse IP statique?

c'est mon premier déploiement d'application web et je rencontre toutes sortes de problèmes.

Je suis actuellement en train de chercher une implémentation nginx + gunicorn pour l'application Django, mais surtout cette question concerne les configurations nginx. Pour certains contextes - nginx recevrait des connexions et un proxy vers le serveur local gunicorn.

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

Mon désir est que lorsque j'accède à quelque chose comme http://xxx.xxx.xxx.xxx:9050 Je pourrais obtenir le site.

Voici l'exemple de code sur lequel je baserai les configurations pour 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;
     }
39
bash-

server_name par défaut une chaîne vide, ce qui est bien; vous pouvez l'exclure complètement.

Une autre approche courante pour le besoin "Je ne veux pas donner de nom à cela" consiste à utiliser server_name _;

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

33
Shane Madden

nom du serveur _; n'est pas un caractère générique voir ici:

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

spécifiez simplement la directive default_server pour un accès IP uniquement (voir http://nginx.org/en/docs/http/request_processing.html )

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

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

server {
   listen 9050;

   .....
}

Plus de détails ici: Nginx server_name et comment cela fonctionne

4
gansbrest