Cómo crear un host virtual en nginx

Antonio J. Galisteo

En esta ocasión, vamos a ver cómo crear un host virtual en nginx. Para ello, vamos a crear el siguiente archivo:

sudo nano /etc/nginx/sites-available/magento

Con el siguiente contenido:

server {
	listen 80;

	root /var/www/html/magento;

	index index.php index.html index.htm;

	server_name magento.local;

	# Place PHP error logs in the Magento log folder
	set $php_log /var/www/html/magento/var/log/php_errors.log;

	# Replaces Apache rewrite rules
	location / {
		try_files $uri $uri/ @handler;
	}

	# Protect sensitive folders
	location /app/                { deny all; }
	location /includes/           { deny all; }
	location /lib/                { deny all; }
	location /media/downloadable/ { deny all; }
	location /pkginfo/            { deny all; }
	location /report/config.xml   { deny all; }
	location /var/                { deny all; }

	# Protect dotfiles (htaccess, svn, etc.)
	location /. { return 404; }

	location @handler {
		rewrite / /index.php;
	}

	# Remove trailing slashes from PHP files
	location ~ .php/ {
		rewrite ^(.*.php)/ $1 last;
	}

	# Pass PHP to a the PHP-FPM backend
	location ~ \.php$ {
		# Fix timeouts when installing Magento via web interface
		fastcgi_send_timeout 1800;
		fastcgi_read_timeout 1800;
		fastcgi_connect_timeout 1800;

                #fastcgi_param MAGE_IS_DEVELOPER_MODE on; # Turn on developer mode
                fastcgi_param MAGE_RUN_CODE $mage_run_code;
                fastcgi_param MAGE_RUN_TYPE $mage_run_type;
                fastcgi_param PHP_VALUE error_log=$php_log;


		include snippets/fastcgi-php.conf;
		fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
	}
}

Lo principal de este archivo es el root, que es el directorio de nuestra web y el server_name que en mi caso como es un servidor de desarrollo no he indicado un dominio sino magento.local. También, como puedes ver, hay alguna configuración específica para Magento. Un ejemplo de archivo de configuración de un host virtual para nginx sería:

server {
	listen 80;

	root /var/www/mi_directorio;

	index index.html index.php;

	server_name mihost.virtual;

	location / {		
		try_files $uri $uri/ /index.php;
	}

	location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
    		expires max;
    		log_not_found off;
  	}

	location ~ \.php$ {
		include snippets/fastcgi-php.conf;	
		fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
	}
	
	location ~ /\. {
		deny all;
	}
	
}

Puedes usar el que quieras. Una vez creado este archivo, lo que vamos a hacer es crear un enlace simbólico en el directorio de sitios habilitados:

ln -s /etc/nginx/sites-available/magento /etc/nginx/sites-enabled/

Reiniciamos nginx para cargar este nuevo host:

sudo service nginx restart

A continuación, vamos a añadir este virtualhost a nuestro archivo host:

sudo nano /etc/hosts

Agregamos la última línea:

127.0.0.1 localhost # Este ya debe estar
127.0.1.1 magento
127.0.0.1 magento.local

Una vez realizado esto, vamos a crear una páquina de prueba:

sudo nano /var/www/html/magento/index.php

Con, por ejemplo, el siguiente contenido:

< ? php phpinfo(); ? >

Con esto, si abrimos un navegador y abrimos la web:

http://magento.local

Podemos ver que se muestra la información de PHP que es el archivo de prueba que hemos creado.

Y así se crea un virtualhost en nginx.

También te puede interesar ver cómo instalar un servidor nginx para Magento en Ubuntu 18.04.

Espero que te haya sido de utilidad!

Publicado el 05-07-2018

Donar

Si te ha sido de ayuda y quieres hacer una donación te lo agradeceremos :)

Compartelo!

Deja un comentario

Comentanos

*

Ir arriba de la pagina