nginx sans nom_serveur et utilisant uniquement une adresse IP statique?


34

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

Je vais actuellement pour 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 dit server_nameque je dois en fournir un? Je n'ai pas l'intention d'utiliser des noms de domaine d'aucune sorte, uniquement 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:9050je puisse 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;
     }

Réponses:


31

server_namepar 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 à ce" consiste à utiliser server_name _;

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


hey pouvez-vous jeter un oeil à ce serverfault.com/questions/678521/…
Muhammad Umer

quelque peu lié
Muhammad Umer

5

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

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

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

2
Il est déconseillé de simplement créer un lien vers l'information utile et de ne pas l'inclure dans votre réponse - dans ce cas, il server_name _;s'agit d'une non-correspondance.
BE77Y

1
"n'est pas un caractère générique" == "est une non-correspondance". Je suis sûr qu'ils l'obtiendront.
Joe

2
Les deux ne sont pas égaux; la non-correspondance est ce qui est servi lorsque rien d'autre ne correspond, alors qu'un caractère générique correspond à tout. Le point ici est cependant que les informations utiles devraient être dans la réponse, pas liées sur un autre site (bien que bien présentées sur ce site), comme détaillé ici
BE77Y

Et le fait est que ce n'est pas une «bonne réponse» mais c'est une réponse. Désolé, pas le temps. Si vous souhaitez le modifier / le réécrire, je vous en donne la permission complète. Sinon, ils sauront exactement quoi faire et c'est utile. N'hésitez pas à le réécrire, sinon la réponse est valable.
Joe

3
Si vous n'avez pas eu le temps d'inclure une ligne supplémentaire avec les informations pertinentes, je ne sais vraiment pas pourquoi vous avez pris la peine de répondre à un message de 3 ans avec une réponse acceptée!
BE77Y

4

Si vous souhaitez 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 car 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 nom_serveur et comment cela fonctionne

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.