nginx catchall conf fichier ne pas attraper tout

J’ai une entrée DNS générique, donc * .mydomain.tld est dirigé vers mon serveur. J’utilise nginx J’ai 2 fichiers conf intitulés:

  • défaut
  • myconf.conf

Mes fichiers de configuration ressemblent à ceci:

défaut:

server { listen 80; listen [::]:80 default_server ipv6only=on; root /var/www/website; index index.html index.htm; server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.html; } } 

myconf.conf:

 server { listen 80; #listen [::]:80 default_server ipv6only=on; root /home/me/www/website; index index.php index.html index.htm; # Make site accessible from http://localhost/ # orig # server_name localhost; server_name me.mydomain.tld; access_log /home/me/logs/me.mydomain.tld.access.log; error_log /home/me/logs/me.mydomain.tld.error.log warn; location / { try_files $uri $uri/ $uri.php?$args; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } } 

Lorsque je navigue vers les domaines comme suit, ce sont les fichiers de configuration qui se chargent.

  • me.mydomain.tld charge le répertoire racine défini dans myconf.conf
  • mydomain.tld charge le répertoire racine défini par défaut
  • quelque chose.mydomaine.tld charge le répertoire racine défini dans myconf.conf

Qu’est-ce qui ne va pas que le défaut n’est pas le fourre-tout qu’il devrait être? Any.mydomain.tld devrait charger le répertoire racine dans le fichier de configuration par défaut.

Dans votre fichier de configuration par défaut, vous devez spécifier default_server sur les deux lignes d’ listen ; De plus, vous devez supprimer la ligne server_name :

 server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/website; index index.html index.htm; #server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.html; } } 

Le trait de soulignement que vous utilisez pour server_name n’est pas réellement un caractère générique (si c’était votre intention). À partir de la documentation nginx Server Names :

Il n’y a rien de spécial à propos de ce nom, il ne s’agit que de l’un des nombreux noms de domaine invalides qui ne se croisent jamais avec un vrai nom. D’autres noms non valides comme “-” et “! @ #” Peuvent également être utilisés.