web-dev-qa-db-fra.com

plusieurs sites sur nginx et sites-available

Avec l’installation de base de nginx, votre dossier sites-available Ne contient qu’un seul fichier: default

comment fonctionne le dossier sites-available et comment l'utiliser pour héberger plusieurs sites Web (distincts)?

69
Kristian

Juste pour ajouter une autre approche, vous pouvez utiliser un fichier séparé pour chaque domaine virtuel ou site que vous hébergez. Vous pouvez utiliser une copie de default comme point de départ pour chacun et personnaliser pour chaque site.
Créez ensuite des liens symboliques dans les sites activés. De cette façon, vous pouvez monter et descendre des sites simplement en ajoutant ou en supprimant un lien symbolique et en émettant un service nginx reload.

Vous pouvez faire preuve de créativité et utiliser cette méthode pour rediriger les sites vers une page en mode maintenance pendant que vous effectuez la maintenance du site.

Donc, la structure ressemble à ceci:

/sites-available/ (you can use obvious file names like this)
| 
|-> a.mysite.com
|-> b.mysite.com
|-> someOtherSite.com

/sites-enabled/ (these are just symlinks to the real files in /sites-available)
| 
|-> a.mysite.com
|-> b.mysite.com

Notez que puisqu'il n'y a que les deux premières entrées, il s'agit des seuls éléments liés symboliquement dans sites-enabled, la troisième entrée, someOtherSite.com est donc hors ligne.

86
Carlos

Si vous regardez nginx.conf, vous trouverez include directive qui inclut tous les fichiers de la sites-enabled répertoire. Ce répertoire stocke les liens symboliques vers les fichiers de configuration de sites-available afin de pouvoir activer et désactiver des éléments de votre configuration.

Comme vous pouvez le constater, ces répertoires n’ont aucune magie.

Si vous souhaitez héberger plusieurs sites Web, vous devez utiliser plusieurs server blocs et/ou server_name directive. Les tutoriels officiels sont ici: noms de serveurs et comment nginx traite une requête .

27
VBart

Vous faites un lien symbolique vers le fichier par défaut depuis les sites disponibles vers les sites activés. Ensuite, vous modifiez le site disponible pour inclure deux blocs de serveur, chacun avec un nom de serveur différent. voir ce qui suit. Cela suppose que vous ayez des domaines nommés exemple.com et exemple2.com. Vous auriez également fait pointer vos @records sur l’adresse IP du serveur sur lequel vous avez installé nginx.

créer un lien symbolique entre le site disponible et un site activé

Sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

éditez le fichier en utilisant l'éditeur de votre choix (vim pour moi)

Sudo vi /etc/nginx/sites-available/default

Voici le contenu de nginx conf en fonctionnement, en supposant que vous exécutiez des applications Web sur les ports 4567 et 4568.

server {

    server_name www.example.com

    location / {
        proxy_pass http://localhost:4567/;
    }

}


server {

    server_name www.example2.com

    location {
        proxy_pass http://localhost:4568/;
    }

}
18
jmontross