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

Publié le 21 août 2014 par Martin Catty | système

Cet article est publié sous licence CC BY-NC-SA

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.