Instalación y configuración de Nginx en Debian 8

Más Apache que Nginx

Durante mis estudios, siempre me han enseñado Apache para montar un servidor web y siempre he tenido curiosidad sobre Nginx, más que nada porque mucha gente decía que “era mejor” y lo de siempre. Ya que he visto que nunca me lo iban a explicar, pues he aprendido por mi parte como instalar y configurar Nginx como servidor web en un Debian (evidentemente).

A diferencia de Apache, Nginx (Engine X) es un servidor web y proxy inverso de alto rendimiento. Este servicio web es multiplataforma y de Código Abierto, licenciado bajo la “Licencia BSD simplificada”. Es un poco más complejo de configurar, pero es más ligero que otros servidores web y además se puede usar como proxy inverso. Respecto a Apache, uno de los mayores inconvenientes que he visto ha sido que no permite instalar nuevos módulos en caliente sin tener que compilar Nginx con el módulo deseado. También la falta de documentación es algo que es necesario, pero supongo que con el tiempo se irá mejorando estos dos aspectos.

Instalando un servidor web en condiciones

Para que tengamos un servidor web, tenemos que tener instalado un servicio web con PHP5, MySQL (o una base de datos) y PHPMyAdmin (para administrar las bases de datos) además de Apa… no, está vez no, está vez Nginx.

Instalar PHP5

Instalar MySQL

Instalar phpMyAdmin

Instalar Nginx y PHP5-FPM

Configuración Nginx

Archivos de configuración de Nginx

Los archivos de configuración de Nginx se encuentran en /etc/nginx. Justo después de instalar el servicio web, dentro de este directorio encontramos la siguiente estructura de directorios:

├── conf.d
├── fastcgi.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── naxsi_core.rules
├── naxsi.rules
├── naxsi-ui.conf.1.4.1
├── nginx.conf
├── proxy_params
├── scgi_params
├── sites-available
│   ├── default
├── sites-enabled
│   ├── default -> ../sites-available/default
├── uwsgi_params
└── win-utf

Como es de esperar, el fichero nginx.conf es el archivo de configuración principal y los directorios principales de configuración son sites-available y sites-enabled (os recuerda un poco esto? :D). El archivo de configuración principal es donde configuraremos las opciones del servidor web y esa configuración afecta a todos los hosts virtuales que tengamos (las páginas web alojadas). En el directorio sites-available crearemos los archivos de configuración específicos para cada web y en el directorio sites-enabled es donde crearemos los enlaces simbólicos a los archivos de configuración de cada host que hayamos creado en sites-available, para que Nginx tenga en cuenta esa configuración y de esta manera active la web.

Configuración de hosts virtuales en Nginx

Como en Apache, se pueden configurar los hosts virtuales según nuestras necesidades y de tres formas: Por IP, por puerto o por dominio.

Hosts virtuales por IP

En este tipo de hosts virtuales, debemos disponer de varias direcciones IP en la misma máquina. Configurando el servidor web adecuadamente, podemos hacer que mediante una IP se visualice una página web y con otra IP otra página web diferente.

Hosts virtuales por puerto

En este caso, en vez de tener varias IPs, sólo tenemos una IP y configuramos los hosts virtuales para que estén disponibles en diferentes puertos (el 80, 8080, 8181…). De forma que accediendo a http://IP:80 se cargaría una web y entrando en http://IP:8080 se cargaría la segunda.

Hosts virtuales por dominio

Esta es la configuración más utilizada en Internet para configurar hosts virtuales. En este caso, sólo necesitamos una IP y todas las páginas web están disponibles por el mismo puerto (generalmente el 80). La forma en que se diferencia una web y otra es el dominio mediante el cuál entramos, como por ejemplo http://www.portallinux.es o http://www.planetlibre.es.

Directivas de configuración

La configuración de hosts en Apache es conocida por ser sencilla, ya que utiliza un lenguaje de marcas para crear los diferentes hosts, en cambio, Nginx es un caso muy diferente y que personalmente no me ha acabado de gustar mucho. A continuación os muestro una tabla con los parámetros en Nginx y su equivalencia en Apache.

[table width =”100%” style =”” responsive =”true”]
[table_head]
[th_column]Nginx[/th_column]
[th_column]Apache[/th_column]
[/table_head]
[table_body]
[table_row]
[row_column]server {
listen 80;[/row_column]
[row_column]<VirtualHost *:80>[/row_column]
[/table_row]
[table_row]
[row_column] Nginx no lo utiliza en sus mensajes de error[/row_column]
[row_column] ServerAdmin info@portallinux.es[/row_column]
[/table_row]
[table_row]
[row_column] root /var/www/portallinux.es;[/row_column]
[row_column] DocumentRoot /var/www/elladodelgeek.com[/row_column]
[/table_row]
[table_row]
[row_column] index index.php;[/row_column]
[row_column] DirectoryIndex index.php[/row_column]
[/table_row]
[table_row]
[row_column] server_name www.portallinux.es portallinux.es;[/row_column]
[row_column]ServerName www.portallinux.es
ServerAlias portallinux.es[/row_column]
[/table_row]
[table_row]
[row_column] error_log ruta_error.log crit;[/row_column]
[row_column]ErrorLog ruta_error.log
LogLevel crit[/row_column]
[/table_row]
[table_row]
[row_column] access_log ruta_access.log;[/row_column]
[row_column] CustomLog ruta_access.log[/row_column]
[/table_row]
[table_row]
[row_column]value-1[/row_column]
[row_column]value-2[/row_column]
[/table_row]
[table_row]
[row_column]location / {
try_files $uri $uri/ /index.php;
}[/row_column]
[row_column]<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>[/row_column]
[/table_row]
[table_row]
[row_column]}[/row_column]
[row_column]</VirtualHost>[/row_column]
[/table_row]
[/table_body]
[/table]

Activar el host por defecto

Una vez hemos instalado todo, lo primero que haremos será hacer unas pequeñas modificaciones en el archivo /etc/nginx/sites-available/default.

Este fichero es aquel que cargará cuando pongamos la IP o localhost en el navegador, esa web por defecto que te dice que el servidor web está funcionando perfectamente, el famoso “It Works” de Apache. Pero en Nginx tenemos que hacer una pequeña modificación antes, lo primero es modificar el parámetro root de la siguiente manera:

También comprobaremos que el parámetro listen 80 está descomentado (sin # delante).

Una vez tenemos esto, ahora nos toca reiniciar el servicio con:

Y si en nuestro navegador ponemos la IP del servidor web visualizaremos lo siguiente:

nginxComo podemos observar carga la pagina por defecto que está en /usr/share/nginx/html/index.html, si queremos mostrar una web tendremos que ponerla allí o cambiar el parámetro root y poner, por ejemplo, la ruta por defecto que tiene Apache /var/www/html. Y hasta aquí este tutorial, en otras ocasiones miraremos otras configuraciones, como configurar paginas por puertos, por dominio y hasta instalar WordPress y PHPMyAdmin.

El contenido de esta entrada está bajo licencia Creative Commons

Zagur

Técnico Superior de Administración de Sistemas. Estudiando actualmente Desarrollo de aplicaciones web. #GNU #Linux #CSS #HTML #Python #SoftwareLibre #OpenSource

Un comentario “Instalación y configuración de Nginx en Debian 8”

  1. Pablo

    Navega con Firefox 41.0 Firefox 41.0 en Ubuntu x64 Ubuntu x64

    Buen artículo, la instalación parece amigable. También veo que hay muchas cosas (por ejemplo lo de sites-available) que para los que hemos usado Apache alguna vez nos resultan bastante familiares.
    Me gustaría preguntar que es un proxy inverso y que usos se le puede dar. Y si Apache también sirve como proxy inverso o es algo nuevo de Nginx.

    saludos!

Comentarios cerrados.

Utilizamos cookies propias y de terceros para mejorar nuestros servicios. Si continúa navegando, consideramos que acepta su uso. Doble clic sobre aquí para cerrar.