web-dev-qa-db-fra.com

Vhosts génériques sur Nginx

Je viens d'installer Nginx sur mon serveur et je suis extrêmement satisfait des résultats, mais je n'arrive toujours pas à comprendre comment insérer des hôtes virtuels génériques.

Voici la structure [du répertoire] que j'aimerais:

-- public_html (example.com)
---subdoamin 1 (x.example.com)
---subdomain 2 (y.example.com)

Comme vous pouvez le voir, c'est assez basique, cependant, j'aimerais pouvoir ajouter des domaines en ajoutant simplement un enregistrement A pour un nouveau sous-domaine, qui pointera instantanément vers le sous-répertoire du même nom sous public_html.

Il y a des trucs sur le web, mais je n'ai pas rencontré quelque chose exactement comme ça.

Toute aide serait grandement appréciée.

27
rorygilchrist

Je vais te montrer.

Le fichier de configuration

server {
  server_name example.com www.example.com;
  root www/pub;
}

server {
  server_name ~^(.*)\.example\.com$ ;
  root www/pub/$1;
}

Fichiers de test

Nous avons deux fichiers de test:

$ cat www/pub/index.html 
COMMON

$ cat www/pub/t/index.html 
T

Essai

Noms de serveurs statiques:

$ curl -i -H 'Host: example.com' http://localhost/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Wed, 23 Mar 2011 08:00:42 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Wed, 23 Mar 2011 07:56:24 GMT
Connection: keep-alive
Accept-Ranges: bytes

COMMON

$ curl -i -H 'Host: www.example.com' http://localhost/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Wed, 23 Mar 2011 08:00:48 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Wed, 23 Mar 2011 07:56:24 GMT
Connection: keep-alive
Accept-Ranges: bytes

COMMON

Et le nom du serveur regexp:

$ curl -i -H 'Host: t.example.com' http://localhost/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Wed, 23 Mar 2011 08:00:54 GMT
Content-Type: text/html
Content-Length: 2
Last-Modified: Wed, 23 Mar 2011 07:56:40 GMT
Connection: keep-alive
Accept-Ranges: bytes

T
43
Alexander Azarov

Ce fichier de configuration Nginx ci-dessous permet les noms d'hôtes génériques qui sont acheminés dynamiquement vers le dossier correspondant dans /var/www/vhost/ tout en générant dynamiquement les fichiers journaux respectifs.

http://test1.wildcard.com/var/www/vhost/test1
/var/log/nginx/test1.wildcard.com-access.log/var/log/nginx/test1.wildcard.com-error.log

http://test2.wildcard.com/var/www/vhost/test2
/var/log/nginx/test2.wildcard.com-access.log/var/log/nginx/test2.wildcard.com-error.log

wildcard.conf

server {
  listen 80;
  listen [::]:80;

  #  Match everything except dot and store in $subdomain variable
  #  Matches test1.wildcard.com, test1-demo.wildcard.com
  #  Ignores sub2.test1.wildcard.com
  server_name ~^(?<subdomain>[^.]+).wildcard.com;

  root /var/www/vhost/$subdomain;

  access_log /var/log/nginx/$Host-access.log;
  error_log  /var/log/nginx/$Host-error.log;
}
5
AnthumChris

Voici comment j'ai géré Hôtes virtuels avec Nginx :

server_name ~^(?<vhost>.*)$;
root /srv/www/$vhost;
access_log /var/log/nginx/$vhost.access.log;

Je ne sais pas pourquoi Wildcard Subdomains in a Parent Folder est si faux/trompeur.

1
hendry