Mon fichier de configuration a un bloc de directive server
qui commence par ...
server {
server_name www.example1.com www.example2.com www.example3.com;
... afin de permettre l'accès au site avec différents noms de domaine.
Cependant, le PHP $_SERVER['SERVER_NAME']
renvoie toujours la première entrée de server_name
, dans ce cas http://www.example1.com
Je n'ai donc aucun moyen à partir du code PHP pour savoir quel domaine l'utilisateur a utilisé pour accéder au site.
Existe-t-il un moyen de dire à nginx/fastcgi de transmettre le vrai nom de domaine utilisé pour accéder au site?
La seule solution que j'ai trouvée jusqu'à présent est de répéter le bloc server
entier pour chaque domaine avec un server_name
entrée mais évidemment j'en cherche une meilleure.
Ensemble SERVER_NAME
utiliser $Host
dans votre fastcgi_params
configuration.
fastcgi_param SERVER_NAME $Host;
Source: http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_param
Ceci est prévu et la bonne solution consiste à utiliser $_SERVER['HTTP_Host']
dans votre code à la place.
Vous devez interpréter SERVER_NAME
comme vérifié nom-serveur, et HTTP_Host
comme entrée utilisateur qui peut être modifiée assez facilement, et ne doit donc pas être approuvée.