Cómo crear un host virtual en nginx
Anuncio:
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!