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'; } 
  • Différence entre wild card SSL
  • Echec du DNS pour les sous-domaines generics
  • Enregistrements generics PFSense pour les hôtes locaux
  • Certificat Wildcard SSL et niveau de sous-domaine
  • Comment configurer un DNS pour utiliser une adresse attrayante?
  • Bind9 sous-domaines virtuels
  • Raisons possibles pour les domaines occasionnellement inaccessibles
  • Dans Nginx, gérez les sous-domaines spécifiques aux ports, redirigez tous les autres
  • Est-ce que le stade. *. Example.com est valable pour un NCGE DNS générique?
  • Lighttpd réécrit des sous-domaines aux sous-dossiers
  • Entrées MX automatiques pour (presque) tous les hôtes dans un domaine
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.