Introducción al servidor web nginx
Instalación de nginx
apt-get update
apt-get install nginx
Introducción a virtual hosting con nginx
Podemos encontrar los sitios disponibles y activos del servidor nginx, siguiendo la filosofía de Apache2 en los directorios:
/etc/nginx/sites-availables/
/etc/nginx/sites-enabled/
Por ejemplo podemos crear un nuevo Virtual Host haciendo una copiar del sitio virtual default
:
cd /etc/nginx/sites-availables/
cp default pagina1
Ahora en el fichero pagina1
configuro el nuevo sitio virtual, teniendo en cuenta los siguientes parámetros:
server_name
: El nombre con el que vamos a acceder al sitio virtual.root
: Directorio donde guardamos los ficheros que se van a servir.index
: Lista con los nombres de los ficheros que va a intentar servir si no se indica ninguno en la URL.- En
listen 80;
y enlisten [::]:80
: Se indica el puerto y las direcciones desde donde se esperan peticiones. En el sitio virtualdefault
tiene configurado la directivadefault_server
nos permite indicar que es el sitio virtual por defecto. Esta directiva hay que quitarla en los nuevos sitios virtuales. - En el fichero
/etc/nginx/nginx.conf
nos encontramos las directivaserror_log
yaccess_log
, para indicar el fichero de log de errores y de accesos respectivamente. Si queremos podemos indicar un fichero diferencia en cada sitio virtual indicando estas directivas.
Para activar un nuevo sitio tenemos que crear el enlace directo en el directorio /etc/nginx/sites-enabled/
:
ln -s /etc/nginx/sites-available/pagina1 /etc/nginx/sites-enabled/
.htaccess en nginx
El fichero .htaccess
en apache2 permite introducir configuración de apache2 en el DocumentRoot del sitio virtual, de esta manera un usuario final puede hacer configuraciones de apache2 sin intervención del administrador. Controlamos la utilización de estos ficheros con la directiva AllowOverride
.
En nginx no podemos hacer uso de los ficheros .htaccess
de apache2.
En determinadas ocasiones podemos necesitar convertir la configuración de apache2 que existe en un fichero .htaccess
a configuración de nginx, para ello podemos hacer uso de algunas páginas web que nos hacen la conversión:
Ejecución de php con nginx
En nginx no existe un módulo propio que permita la ejecución del lenguaje PHP. Por lo que tenemos que utilizar un servidor de aplicaciones php como php-fpm.
Para ejecutar en un virtualhost nginx el proxy inverso para fpm_php:
En el virtualhost descomentamos las siguientes líneas:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
#fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;
}
Descomentando la opción que nos interese:
- Si php-fpm está en un socket Unix, descomentamos la línea
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
. - Si php-fpm escucha en un socket TCP, descomentamos la línea:
fastcgi_pass 127.0.0.1:9000;