GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer un sous-domaine ou héberger plusieurs domaines à l'aide de nginx sur le serveur Linux

Saviez-vous que vous pouvez héberger plusieurs domaines et sous-domaines en utilisant une seule adresse IP sous Linux via des blocs de serveur nginx (ou des hôtes virtuels sous apache) ?

Eh bien, si vous ne savez pas comment faire, la lecture de ce didacticiel vous permettra de configurer deux domaines et un sous-domaine pointant tous les deux vers la même adresse IP et le même hôte sur le même serveur.
Voici l'hypothèse générale pour cette configuration :

  • Adresse IP :220.168.32.101
  • Noms de domaine  :exemple.com, blog.exemple.com, fakenews.com

Avant de commencer le tutoriel, la première chose que vous devez faire est de faire pointer tous vos domaines et sous-domaines vers l'adresse IP unique via votre fournisseur DNS (éditez A , CNAME ).
Cependant, si vous souhaitez tester cela localement, modifiez le fichier /etc/hosts fichier de configuration et ajoutez ce qui suit :

220.168.32.101 example.com blog.example.com
220.168.32.101 fakenews.com

Et lorsque vous pingez ces domaines localement sur le serveur, vous obtiendrez une réponse correcte (200).

Nous allons maintenant suivre les étapes pour configurer ces noms de domaine :

1. Installez et démarrez nginx

Utilisez la commande suivante pour installer nginx sur ubuntu

$ sudo apt install nginx
# now start it
$ sudo nginx

2. Testez le nginx

Vérifiez l'un des domaines ou l'adresse IP de votre navigateur pour vous assurer que nginx fonctionne correctement. Le navigateur affichera une page nginx par défaut.

3. Configurez les répertoires de test pour chaque domaine

Jusqu'à présent, tous les domaines ont été configurés correctement, mais il y a un énorme problème, tous pointant vers la même page. Nous devons séparer ces domaines pour pointer vers leurs propres pages. Pour cela, je vais configurer des répertoires de test et des pages html.

  • Créer des répertoires pour chaque domaine et sous-domaine
$ cd /var/www
$ sudo mkdir example.com blog.example.com fakenews.com
  • Créer des pages HTML simples pour chacun
$ sudo touch example.com/index.html
$ sudo touch blog.example.com/index.html
$ sudo touch fakenews.com/index.html
  • Enfin, mettez un contenu différent dans chaque index.html fichiers

4. Création de blocs de serveur pour chaque domaine et sous-domaine

Nginx fournit par défaut bloc serveur dans /etc/nginx/sites-available . Nous copierons ce bloc de serveur pour chaque domaine et effectuerons des modifications pour chacun.
Nous allons également créer un lien symbolique du nouveau fichier

## For example.com domain
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
## similarly do for others also.

Maintenant, après modification, le nouveau fichier ressemblera à ceci pour example.com domaine

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/example.com;
        index index.html;
        server_name example.com;
}

Ici default_server signifie que si aucun des autres domaines ne se résout, le dernier recours est de résoudre ce blocage de serveur.

REMARQUE :Il n'y a qu'un seul bloc de serveur par défaut dans nginx avec le même port.

De même pour les deux autres domaines, la configuration est :

## For blog.example.com subdomain
server {
        listen 80;
        listen [::]:80;
        root /var/www/blog.example.com;
        index index.html;
        server_name blog.example.com;
}

## For fakenews.com domain
server {
        listen 80;
        listen [::]:80;
        root /var/www/fakenews.com;
        index index.html;
        server_name fakenews.com;
}

Bonus : Supposons que fakenews.com écoute de domaine sur un port différent (disons 2368 port ) et vous souhaitez mettre en proxy le port dans nginx par défaut 80 port, vous pouvez utiliser l'emplacement bloquer à l'intérieur du serveur bloquer comme ceci :

server {
   ## other configuration as above
    # ...
  location {
     proxy_pass http://127.0.0.1:2368;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header HOST $http_host;
  }
}

C'est tout pour l'instant, pour toute question, dites-le dans les commentaires ci-dessous.


Linux
  1. Comment installer le serveur Web Nginx sur Linux

  2. Comment créer un hôte virtuel Nginx (bloc serveur)

  3. Comment configurer un serveur de journalisation centralisé à l'aide de Rsyslog

  4. Comment configurer SSH sans mot de passe sous Linux

  5. Servir plusieurs domaines en utilisant des hôtes virtuels

Comment installer le serveur Web Nginx sur Alpine Linux

Comment installer Nginx sur un serveur cloud Arch Linux

Héberger plusieurs sites Web sur un seul serveur avec Apache sur Ubuntu 18.04

Comment configurer le cache Nginx sur un serveur LAMP

Comment configurer le cache Nginx sur le serveur LEMP

Comment configurer le serveur et le client VPN Linux à l'aide d'OpenVPN