12 votes

Comment définir un hôte par défaut pour nginx ?

Je suis en train d'essayer de comprendre comment définir un hôte par défaut pour mon installation nginx. J'ai trouvé cet article dans le Wiki nginx :

http://wiki.nginx.org/NginxVirtualHostExample#A_Default_Catchall_Virtual_Host

Malheureusement, cela ne fonctionne pas. Après le redémarrage, j'obtiens ceci :

Redémarrage de nginx : nginx: [emerg] directive "http" inconnue dans /etc/nginx/sites-enabled/catchall:1
nginx: échec du test du fichier de configuration /etc/nginx/nginx.conf

Après avoir supprimé la directive http, j'obtiens ceci :

Redémarrage de nginx : nginx: [emerg] format de journal "main" inconnu dans /etc/nginx/sites-enabled/catchall:7
nginx: échec du test du fichier de configuration /etc/nginx/nginx.conf

Je suis sur Ubuntu 10.04.3 où j'utilise le PPA officiel de nginx. La version 1.0.9 de nginx est en cours d'exécution.

19voto

cyberx86 Points 20450

Les configurations Nginx sont basées sur une série de blocs imbriqués. Il ne devrait y avoir qu'un seul bloc http. Celui-ci est généralement défini dans /etc/nginx/nginx.conf - tous les fichiers inclus (par exemple, ceux provenant de sites disponibles) sont inclus dans ce bloc http. Afin de configurer un hôte par défaut/général, vous avez seulement besoin de la section du bloc server pour votre hôte par défaut. Cela se fait en ajoutant 'default' à la directive listen. De plus, il est courant d'utiliser un server_name qui ne correspond à aucun nom réel - typiquement un tiret bas ("_"), mais d'autres caractères sont également acceptables. Si vous omettez le paramètre par défaut, le premier bloc server est traité comme tel. (Voir le guide de nginx sur les server_names pour plus d'informations)

La configuration par défaut (ou 'originale' dans ce contexte) de nginx peut inclure un bloc server par défaut (catch-all) dans nginx.conf que vous pouvez configurer.

Pour ce qui est de la deuxième erreur, assurez-vous que 'main' est défini dans nginx.conf (une ligne devrait commencer par 'log_format main ...' (et bien sûr, vérifiez vos parenthèses). Vous pouvez omettre entièrement la ligne 'access_log' si vous ne voulez pas que les requêtes vers votre serveur par défaut soient enregistrées (ou vous pouvez modifier le format en définissant un nouveau format).

-1voto

Thilina Points 64

Essayez ceci. Remplacez return 404 par l'action par défaut de votre choix.

https://serverfault.com/a/946083/453080

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