Go to Hackademy website

Demander à nginx de ne répondre que pour un nom de domaine exact

Martin Catty

Posté par dans la catégorie système

Nginx répond dès que possible

Mettons que vous ayez un wilcard DNS qui pointe vers votre serveur.

Par exemple *.domain.tld pointe sur une IP donnée.

Si vous avez une application a.domain.tld et b.domain.tld configurée sur votre serveur, que se passe t-il si vous demandez l’URL c.domain.tld ?

Et bien Nginx va tenter de répondre en affichant l’un des deux sites configurés. En effet si vous avez une directive de type :

server {
  listen 80;
  server_name a.domain.tld;
}

Cela ne signifie pas que nginx redirigera sur votre application uniquement lorsque vous demandez a.domain.tld.

Rendre nginx plus strict sur les noms de domaine

Pour obtenir un matching strict du nom de serveur vous devez d’abord renvoyer une 404 dans une directive server globale.

server {
  return 404;
}

server {
  listen 80;
  server_name a.domain.tld;
}

En effet nginx fonctionne sur le principe du plus générique au plus spécifique.

Vous lui indiquez donc que dans le cas général vous voulez retourner une 404, et dans le particulier du bon nom de domaine vous voulez effectuer le traitement indiqué.

L’équipe Synbioz.

Libres d’être ensemble.

Commentaires (2) Flux RSS des commentaires

  • 21/08/2014 à 14:54

    Nicolas Blanco

    Petite astuce très pratique effectivement.

    C'est pas facile de faire le switch de Rails où la priorité est faite aux routes les plus hautes placées à nginx.

  • 02/10/2014 à 14:10

    Alasta

    Bonjour,

    vous avez une configuration pour Apache ? se serait super cool ;)

    Merci d'avance

Ajouter un commentaire