Nginx es un servidor web que fue lanzado en 2004. Este servidor es fácil de usar, pero a pesar de esto, maneja una gran cantidad de conexiones perfectamente. Esta característica se debe a su arquitectura interna. Inicialmente, fue creado como un servidor que ejecuta contenido estático (el llamado servidor de caché). A diferencia de Apache, Nginx no tiene un intérprete incorporado para manejar peticiones de contenido dinámico.
Esto requiere una interacción adicional entre el servidor web y la aplicación. El gestor de procesos PHP-FPM (FastCGI) resuelve con éxito este problema. Lo importante es que al trabajar con PHP, el aglutinante Nginx + PHP-FPM se muestra menos productivo que Apache + php_mod.
Así que si su servidor tiene requisitos de alto rendimiento para PHP, es mejor mirar el bundle apache + php_mod. Otro punto importante es que Nginx requiere más esfuerzo de configuración que Apache.
Este artículo trata de la instalación y configuración sencilla del servidor Nginx junto con el gestor de procesos PHP-FPM en Debian 8. Todas las operaciones se realizan bajo los privilegios del usuario root.
En primer lugar, es necesario actualizar:
apt-get update
A continuación, instalaremos Nginx:
apt-get -y install nginx
Tras la instalación, probaremos el servidor. Para ello, basta con abrir la dirección del navegador web de nuestro servidor. Se abrirá el siguiente contenido:

Esta es la página estándar de plug-in para Nginx. El siguiente paso es instalar php5-fpm. Es muy sencillo:
apt-get -y install php5-fpm
A continuación, hay que hacer la configuración. Primero, configura el servidor Nginx. El archivo de configuración está en /etc/nginx/nginx.conf.
Abra este archivo. Utilizamos el editor de texto vi, pero puedes utilizar cualquier otro que te convenga.
vi /etc/nginx/nginx.conf
Vamos a entender un poco la estructura del propio archivo. Todo el archivo es algo similar al código del programa. Tiene directivas. Se dividen en dos tipos:
- Simple - una cadena con operadores que terminan con el símbolo ";". Por ejemplo: pid /run/nginx.pid;
- Bloque - una directiva que contiene parámetros adicionales colocados entre llaves {}.
Otras directivas pueden colocarse dentro de llaves. En este caso, se llamará contexto, y todas las directivas que están en el archivo de configuración pero no están entre llaves están en el contexto global o el llamado contexto principal.
Las cadenas marcadas con el símbolo # son comentarios y no se consideran en la configuración.
Como puede ver en el fichero hay una directiva:
include /etc/nginx/sites-enabled/*;
Esta directiva dice que este archivo de configuración incluye todos los archivos de configuración del directorio /etc/nginx/sites-enabled/directory. Este directorio esencialmente contiene enlaces simbólicos a la configuración de hosts virtuales (esencialmente los sitios servidos en el servidor).
Ahora tenemos que configurar un host virtual que será responsable de nuestro recurso más simple (que será test.net). Primero, crearemos un directorio para él. Que sea un comando:
mkdir -p /var/www/test.net/html
Ahora vamos a crear un archivo index.html en este directorio con el siguiente contenido:
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h>This is a test page.</h>
</body>
</html>
Ahora tenemos el contenido del sitio, vamos y una página de todo. Para este sitio, es necesario crear un host virtual. Copie el archivo predeterminado para el host virtual:
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/test.net
A continuación, ábralo para editarlo. La directiva listen tiene opciones para default_server. Sólo se puede establecer un bloque con este valor, lo que significa que este bloque servirá consultas para las que no se encuentre nada más adecuado. Por lo tanto las líneas
listen 80 default_server; listen [::]:80 default_server;
debe eliminarlas de este fichero. A continuación, debe configurar el directorio raíz que contiene el contenido de nuestro sitio. Para ello, escribimos la directiva raíz de la siguiente manera:
root /var/www/test.net/html;
La siguiente directiva de índice define los archivos que se utilizarán como archivos de índice. El orden en el que se comprueban los ficheros se corresponde con el orden en el fichero de configuración. Esta directiva se escribe como sigue:
index index.html index.htm index.nginx-debian.html;
La siguiente directiva server_name especifica el nombre del servidor. Como valores, especificamos el nombre de dominio y el alias cuando el nombre de dominio se especifica con el prefijo www.
server_name test.net www.test.net;
A continuación, sólo es necesario especificar una directiva location que establezca la configuración del sitio basándose en el nombre URI especificado en la petición. En nuestro caso, tendrá un aspecto sencillo:
location / {
try_files $uri $uri/ =404;
}
Esto significa que primero se comprobarán los archivos, luego los directorios, y si no se encuentra nada adecuado, se devolverá Not Found (404).
Esto es todo con el fichero de configuración. Su contenido final es el siguiente:
#cat /etc/nginx/sites-available/test.net
server {
root /var/www/test.net/html;
index index.html index.htm index.nginx-debian.html;
server_name test.net www.test.net;
location / {
try_files $uri $uri/ =404;
}
}
Todas las demás directivas y sus valores se pueden leer en la documentación oficial de Nginx, que está aquí http://nginx.org/en/docs/.
Ahora tenemos el contenido del sitio y su archivo de configuración. Queda incluirlo. Para ello, crea un enlace simbólico:
ln -s /etc/nginx/sites-available/test.net /etc/nginx/sites-enabled/
Reinicia el servidor para hacer efectivos los cambios:
/etc/init.d/nginx restart
Comprobemos el funcionamiento del recurso creado.

Para abrir una página, es posible que tenga que añadir una línea al archivo hosts del ordenador desde el que realiza la comprobación:
xxx.xxx.xxx.xxx test.net
Где xxx.xxx.xxx.xxx - это IP-адрес сервера с установленным Nginx. Файл hosts, находится:
- C:\Windows\System32\drivers\etc (в Win7);
- /etc/hosts (в Debian).
Hemos instalado Nginx y php5-fpm, así como hecho el sitio más simple. El siguiente paso es configurar PHP y aplicarlo con Nginx.
En primer lugar, vamos a crear una página con código PHP en nuestro host virtual. Vamos a hacer el archivo /var/www/test.net/html/info.php como sigue:
<?php phpinfo(); ?>
Ahora abra esta página en el navegador http://test.net/info.php
¿Pero qué pasa con la ejecución del código PHP? Un código PHP que no ejecutamos porque el intérprete PHP no está configurado en Nginx. Hagamos esto
Abra nuestro archivo de configuración /etc/nginx/sites-available/test.net. Añade la siguiente directiva de bloque:
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Esta directiva describe los parámetros para procesar las consultas que van a los archivos PHP. No voy a describir cada parámetro y su valor. Esta información se puede encontrar en la documentación oficial aquí http://nginx.org/en/docs/dirindex.html
Ahora nuestro archivo de configuración es el siguiente:
server {
root /var/www/test.net/html;
index index.html index.htm index.nginx-debian.html;
server_name test.net www.test.net;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Guarda los cambios en el archivo y reinicia nuestro servidor Nginx.
/etc/init.d/nginx restart
Ahora intentemos de nuevo abrir http://test.net/info.php. El resultado debería ser el siguiente:

He marcado la información en la captura de pantalla que indica el uso del gestor FPM.
De hecho, la configuración más simple de Nginx + servidor PHP-FPM está completa. El sitio más simple es creado y configurado para trabajar con PHP.
Consulte el siguiente artículo sobre la configuración de PHP-FPM.