SERVER_NAME vs HTTP_HOST (Nginx + PHP)

J'ai une configuration de server catchall qui obtient tous les sous-domaines et les oriente vers le même script PHP. Il existe des milliers de sous-domaines et ils sont créés dynamicment.

Le script PHP utilise HTTP_HOST pour identifier le sous-domaine et récupérer le contenu de la database en fonction du sous-domaine identifié.

Cela fonctionne bien, mais je reçois ce journal de Nginx:

PHP message: PHP Notice: Undefined index: HTTP_HOST in /usr/share/nginx/html/index.php on line 9 

J'ai cherché sur le Web et j'ai découvert que HTTP_HOST peut ne pas toujours être défini. Le manuel PHP indique:

'HTTP_HOST' = Contenu de l'hôte: en-tête de la request en cours, s'il y en a un .

J'ai donc pensé à utiliser la variable SERVER_NAME au lieu de HTTP_HOST. Mais quand je le fais, SERVER_NAME ne contient pas la partie de sous-domaine. Il returnnera toujours ce que j'écris dans la configuration Nginx, c'est-à-dire ~^(.+)$ Dans mon cas.

Existe-t-il un moyen de changer la configuration Nginx pour que SERVER_NAME inclue les sous-domaines dynamics? Par exemple, pour renvoyer quelque chose comme sub1.mydomain.com, sous2.mydomain.com et ainsi de suite.

Existe-t-il une solution pour ce problème?

Ma configuration actuelle est:

 server { listn 80 default_server; server_name ~^(.+)$; } 

One Solution collect form web for “SERVER_NAME vs HTTP_HOST (Nginx + PHP)”

Je aborderais ce problème comme celui-ci dans votre code PHP:

 if (isset($_SERVER['HTTP_HOST'])) { $host = $_SERVER['HTTP_HOST']; } else { $host = 'default.example.com'; } 
  • Comment configurer un DNS pour utiliser une adresse attrayante?
  • Dans Nginx, gérez les sous-domaines spécifiques aux ports, redirigez tous les autres
  • Double Wildcard SSL Certificates
  • Les loggings d'hôte DNS peuvent-ils être configurés pour créer des sous-sous-domaines generics
  • La meilleure façon d'ajouter un enregistrement générique DNS pour un domaine
  • Comment wordpress.com fait-il une évolutivité
  • Sous-domaines dynamics sur Mac OS x
  • Comment faire plusieurs sous-domaines generics dans un file de zone unique?
  • DNS généalogique, DNS hébergé ou server DNS
  • Enregistreurs de domaine prenant en charge les loggings CNGE generics
  • Tous les sous-domaines inutilisés ne fonctionnent pas
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.