179 votes

nginx server_name joker ou fourre-tout

J'ai une instance de nginx qui sert plusieurs sites Web. Le premier est un message d'état sur l'adresse IP du serveur. Le second est une console d'administration sur admin.domain.com . Ceux-ci fonctionnent très bien. Maintenant, j'aimerais que toutes les autres demandes de domaine aillent à un seul et unique index.php - J'ai beaucoup de domaines et de sous-domaines et il n'est pas pratique de les répertorier tous dans une configuration nginx.

Jusqu'à présent, j'ai essayé de régler server_name a * mais cela a échoué en raison d'un caractère générique invalide. *.* fonctionne jusqu'à ce que j'ajoute les autres blocs de serveur, puis je suppose qu'il entre en conflit avec eux.

Existe-t-il un moyen d'exécuter un bloc de serveur attrape-tout dans nginx après que d'autres sites ont été définis ?

N.B. Je ne suis pas un spammeur, ce sont des sites authentiques avec un contenu utile, ils sont juste alimentés par le même CMS à partir d'une base de données !

14voto

Ashish Points 648

Pour moi, la définition de default_server ne fonctionnait pas. Je l'ai résolu en

server_name ~^.*$

en utilisant l'expression régulière de tous.

5voto

Pavel Golubev Points 528

Si vous voulez aussi attraper les demandes avec des Host (ce qui est autorisé dans HTTP/1.0 ), vous pouvez utiliser à la fois les expressions rationnelles et les expressions vides. server_name :

server {
    listen      80;
    server_name ~. "";
}

-1voto

ßãlãjî Points 95

Essayez $http_host

server {
    server_name $http_host;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X