Le mostraremos cómo crear un host virtual Nginx, también conocido como bloque de servidor Nginx. En uno de nuestros tutoriales anteriores explicamos cómo instalar y configurar el servidor LNMP (Nginx, MySQL y PHP) en un VPS Debian 6 (squeeze), ahora vamos a ver cómo configurar un nuevo bloque de servidor (host virtual ) para cada nuevo dominio.
Nota:“VirtualHost” es un término de Apache. Nginx no tiene hosts virtuales, tiene "Bloques de servidor" que usan las directivas server_name y listen para vincularse a los sockets tcp.
El siguiente script se puede usar para configurar un nuevo bloque de servidor en su servidor 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" Esto es lo que hace, en pocas palabras:
- Crea un nuevo directorio para el sitio (/var/www/DOMAIN.COM/public_html)
- Crea un nuevo directorio para archivos de registro (/var/www/DOMAIN.COM/logs)
- Establece el propietario/grupo correcto.
- Crea un archivo index.html simple para mostrar que el sitio está funcionando.
- Pide reiniciar.
Para usar el tipo de script:
./nginx_vhost.sh newdomain.com
El script debería funcionar en Debian, Ubuntu y distribuciones estrechamente relacionadas.
Si usa uno de nuestros planes de alojamiento VPS de Ubuntu , no tiene que crear Nginx Virtual Host usted mismo, simplemente puede pedirle a nuestros administradores expertos de Linux que creen un bloque de servidor Nginx para usted. Están disponibles las 24 horas del día, los 7 días de la semana y atenderán su solicitud de inmediato.
PD. Si le gustó esta publicación, sobre cómo crear un host virtual Nginx, compártala con sus amigos en las redes sociales usando los botones a la izquierda o simplemente deje una respuesta a continuación. Gracias.