Nginx root basée sur le nom d'hôte sans www

L'anglais n'est pas ma langue maternelle, acceptez mes excuses pour tout problème de langue.

Je veux une configuration avec une racine automatique, indépendamment du domaine, ressemble à ceci (en utilisant nginx):

root /var/www/${http_host}/public 

Mais je veux que le domaine racine et le "www" indiquent le même directory, mais sans le "www":

Exemple:

  1. " www.mysite.com " et " mysite.com "

    root / var / www / mysite.com / public

  2. Mais " blog.mysite.com "

    root / var / www / blog.mysite.com / public


C'est-à-dire que seul le "www" devrait pointer vers le directory qui n'a pas "www" dans le nom.

Oui, j'ai vu qu'il y a d'autres questions similaires ( comme celle-ci ), mais j'ai eu du mal à supprimer le "www". Excusez-moi!

Je n'utiliserai pas un nom de server générique, mais cela devrait fonctionner même avec:

 server_name ~.+$; 

Mais aussi:

 listn 443 ssl http2; server_name ~ ^((www|blog|account|bbs)\.)?mysite.com$; root /var/www/${http_host}/public ssl_certificatee /ssl/${http_host}/{http_host}.pem ssl_certificatee_key /ss/${http_host}/{http_host}.key 

REMARQUE: il devrait fonctionner à partir du path de certificate ssl.

One Solution collect form web for “Nginx root basée sur le nom d'hôte sans www”

Vous pouvez utiliser une map dans le bloc http comme ceci:

 map $http_host $rootdir { "~^(?:www\.)?(<domain>.+)$ $domain; } 

Ensuite, vous utilisez ce qui suit dans votre bloc server :

 root /var/www/$rootdir/public; 

Dans la directive de map , nous convertit la variable $http_host contenant l'en-tête de l' Host requête HTTP en $rootdir utilisant l'expression régulière.

Dans l'expression régulière, nous extrayons le nom de domaine réel sur la variable $domain de l'en-tête Host en excluant www. préfixe s'il existe. Nous utilisons ensuite la variable $domain pour créer la variable $rootdir .

Cependant, cette méthode pourrait ne pas fonctionner avec SSL en raison des raisons mentionnées dans le commentaire. Dans ce cas, vous devez implémenter un système de gestion de configuration qui génère des files de configuration pour les domaines à partir de templates.

  • YSlow - Giving Fs for Expire and Compression, mais les en-têtes de réponse apparaissent corrects
  • Journal d'access nginx et moteur de search yandex
  • la request de tentative nginx peut-elle requestr si une licorne est surchargée et renvoie un 502?
  • NGINX ignore Auth Basic?
  • Nginx: gérer l'location en fonction de la méthode HTTP
  • nginx ne sert pas les files statiques d'administration?
  • Comment optimiser le temps pour le premier octet (TTFB)?
  • Comment puis-je ajouter Access-Control-Allow-Origin dans NGINX?
  • Comment puis-je utiliser un certificate SSL généré avec Java keytool avec Nginx?
  • Reverse Proxy - Supprimer le sous-directory
  • nginx se connecte à syslog - connection refusée
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.