Nous allons vous montrer comment créer un hôte virtuel Nginx, également appelé bloc de serveur Nginx. Dans l'un de nos précédents tutos nous expliquions Comment installer et configurer un serveur LNMP (Nginx, MySQL et PHP) sur un VPS Debian 6 (squeeze), maintenant nous allons voir comment mettre en place un nouveau bloc serveur (hôte virtuel ) pour chaque nouveau domaine.
Remarque :"VirtualHost" est un terme Apache. Nginx n'a pas d'hôtes virtuels, il a des "blocs de serveur" qui utilisent les directives server_name et listen pour se lier aux sockets tcp.
Le script suivant peut être utilisé pour configurer un nouveau bloc de serveur sur votre serveur Nginx.
#!/usr/bin/env bash # # Nginx - new server block # http://rosehosting.com # Functions ok() { echo -e '\e[32m'$1'\e[m'; } # Green die() { echo -e '\e[1;31m'$1'\e[m'; exit 1; } # Variables NGINX_AVAILABLE_VHOSTS='/etc/nginx/sites-available' NGINX_ENABLED_VHOSTS='/etc/nginx/sites-enabled' WEB_DIR='/var/www' WEB_USER='www-data' # Sanity check [ $(id -g) != "0" ] && die "Script must be run as root." [ $# != "1" ] && die "Usage: $(basename $0) domainName" # Create nginx config file cat > $NGINX_AVAILABLE_VHOSTS/$1 <<EOF server { server_name $1; listen 80; root $WEB_DIR/$1/public_html; access_log $WEB_DIR/$1/logs/access.log; error_log $WEB_DIR/$1/logs/error.log; index index.html index.php; location / { try_files \$uri \$uri/ @rewrites; } location @rewrites { rewrite ^ /index.php last; } location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; } location ~ /\.ht { deny all; } location ~ \.php { fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; } } EOF # Creating {public,log} directories mkdir -p $WEB_DIR/$1/{public_html,logs} # Creating index.html file cat > $WEB_DIR/$1/public_html/index.html <<EOF <!DOCTYPE html> <html lang="en"> <head> <title>$1</title> <meta charset="utf-8" /> </head> <body class="container"> <header><h1>$1<h1></header> <div id="wrapper"><p>Hello World</p></div> <footer>© $(date +%Y)</footer> </body> </html> EOF # Changing permissions chown -R $WEB_USER:$WEB_USER $WEB_DIR/$1 # Enable site by creating symbolic link ln -s $NGINX_AVAILABLE_VHOSTS/$1 $NGINX_ENABLED_VHOSTS/$1 # Restart echo "Do you wish to restart nginx?" select yn in "Yes" "No"; do case $yn in Yes ) /etc/init.d/nginx restart ; break;; No ) exit;; esac done ok "Site Created for $1"
Voici ce qu'il fait, en un mot :
- Crée un nouveau répertoire pour le site (/var/www/DOMAIN.COM/public_html)
- Crée un nouveau répertoire pour les fichiers journaux (/var/www/DOMAIN.COM/logs)
- Définit le propriétaire/groupe correct.
- Crée un simple fichier index.html pour montrer que le site fonctionne.
- Demande de redémarrage.
Pour utiliser le type de script :
./nginx_vhost.sh newdomain.com
Le script devrait fonctionner sur Debian, Ubuntu et les distributions étroitement liées.
Si vous utilisez l'un de nos plans d'hébergement VPS Ubuntu, vous n'avez pas besoin de créer vous-même l'hôte virtuel Nginx, vous pouvez simplement demander à nos administrateurs Linux experts de créer un bloc de serveur Nginx pour vous. Ils sont disponibles 24h/24 et 7j/7 et prendront immédiatement en charge votre demande.
PS. Si vous avez aimé cet article sur la création d'un hôte virtuel Nginx, partagez-le avec vos amis sur les réseaux sociaux à l'aide des boutons à gauche ou laissez simplement une réponse ci-dessous. Merci.