Diferencia entre revisiones de «NGINX»

De La Wiki de KiVi
Sin resumen de edición
 
(No se muestran 5 ediciones intermedias del mismo usuario)
Línea 17: Línea 17:
  |data5 = [[Servidor web]], [[Servidor proxy|Proxy]]
  |data5 = [[Servidor web]], [[Servidor proxy|Proxy]]
  |label6 = Licencia
  |label6 = Licencia
  |data6 = [[Licencia BSD#Licencia SMX2 simplificada por Antonio licencia FreeBSD (de 2 cláusulas)|Licencia BSD simplificada]].<ref name = "Igor Sysoev, nginx license, 2019"
  |data6 = [[Licencia BSD#Licencia SMX2 simplificada por Antonio licencia FreeBSD (de 2 cláusulas)|Licencia BSD simplificada]]
}}
}}


== Introducción ==
'''Nginx''' (pronunciado en inglés «ényin-ex», /ˈɛn<small>d</small>ʒɪn-ɛks/)​ es un servidor web/Proxy inverso ligero de alto rendimiento y un proxy para protocolos de correo electrónico (IMAP/POP3).​


Introducción
Es software libre y de código abierto, licenciado bajo la Licencia BSD simplificada; también existe una versión comercial distribuida bajo el nombre de Nginx Plus.​ Es multiplataforma, por lo que corre en sistemas tipo Unix (GNU/Linux, BSD, Solaris, Mac OS X, etc.) y Windows.


Instalación
El sistema es usado por una larga lista de sitios web conocidos,​ como: WordPress, Netflix, Hulu, GitHub, Ohloh, SourceForge,  TorrentReactor y partes de Facebook (como el servidor de descarga de archivos zip pesados).
 
 
Su creador, Igor Sysoev, en su página personal desde 2009 escribe el nombre totalmente en minúsculas,​ mientras que el nombre de la empresa propietaria desde 2011 lo escribe totalmente en mayúsculas,​ lo cual se corresponde con el nombre que devuelve el encabezado HTTP en todas y cada una de las solicitudes de conexión con que inicia la visita de cada página web.
 
Para complicar más el asunto el logotipo tiene caracteres tanto en mayúsculas y minúsculas del alfabeto cirílico,​ no obstante se ha logrado un consenso en denominar ''nginx'' al servidor web,​ ''NGINX'' a los productos y servicios derivados que maneja la empresa y ''Nginx'' para referirse a ambos en conjunto.
 
== Comparación con Apache ==
Nginx fue inicialmente desarrollado con el fin explícito de superar el rendimiento ofrecido por el servidor web Apache.​ Sirviendo archivos estáticos, Nginx usa dramáticamente menos memoria que Apache, y puede manejar aproximadamente cuatro veces más solicitudes por segundo. Este aumento de rendimiento viene con un costo de disminuida flexibilidad, como por ejemplo la capacidad de anular las configuraciones de acceso del sistema por archivo (Apache logra esto con un archivo .htaccess, mientras que Nginx no tiene desarrollada tal funcionalidad). Anteriormente, incorporar módulos de terceros en Nginx requería recompilar la aplicación fuente con los módulos enlazados estáticamente. Esto fue parcialmente superado en la versión 1.9.11 de febrero de 2016, con la adición de carga dinámica de módulos. Sin embargo, los módulos aun deben ser compilados al mismo tiempo que Nginx, y no todos los módulos son compatibles con este sistema; algunos requieren el antiguo proceso de enlazado estático.
 
== Instalación ==
En nuestros servidores [[Fedora]] o derivados podemos instalarlo con:<blockquote>sudo dnf install nginx php-fpm</blockquote>Añado el paquete "'''php-fpm'''" para tener la integración con el lenguaje  [[PHP]].
 
Una vez instalado lo iniciamos:<blockquote>sudo systemctl start nginx php-fpm</blockquote>Y lo habilitamos para persistir el servicio en el inicio de sistema:<blockquote>sudo systemctl enable nginx php-fpm</blockquote>Seguimos añadiendo una regla permanente del cortafuegos:<blockquote>sudo firewall-cmd --permanent --add-service=http
 
sudo firewall-cmd --permanent --add-service=https</blockquote>Y recargamos el cortafuegos:<blockquote>sudo firewall-cmd --reload</blockquote>Ahora basta con abrir el navegador web y escribir la IP del servidor web:, por ejemplo:
 
http://192.168.1.3
 
Y ya debería mostrar la página de ejemplo.
 
Antes que nada, no abrimos '''https''' porque el servicio está configurado para tener el [[SSL]] comentado.
 
== Estructura de ficheros y directorios ==
Como todos los servicios instalados, el directorio de configuración se encuentra en:<blockquote>/etc/nginx</blockquote>De todos los ficheros nos quedaremos con el fichero de configuración:<blockquote>nginx.conf</blockquote>En el que se muestra la configuración general del servidor como el directorio, el puerto de trabajo y que, como es recomendable, las configuraciones adicionales se realizan en la linia:<blockquote>include /etc/nginx/conf.d/*.conf;</blockquote>Es decir, aplicará todos los ficheros con extensión "conf" de este directorio.
 
Por defecto, el directorio de publicación es:<blockquote>/usr/share/nginx/hmtl</blockquote>Aunque podemos cambiar el directorio, pero recordemos que hay que aplicar las reglas de [[SELinux]] para el directorio.
 
Por otro lado, el registro de la navegación se encuentra en los ficheros:<blockquote>/var/log/nginx/access.log ##para los registros de acceso
 
/var/log/nginx/error.log ##Para los errores de carga de páginas.</blockquote>NOTA - en la navegación, entre otras cosas, se muestra el navegador utilizado.
 
== Configuraciones ==
A continuación vamos a explicar las configuraciones más utilizadas por este servicio:
 
=== Balanceo de carga ===
Esta opción nos permite a un equipo nodo poder permitir que una página web se cargue por otros equipos, por ejemplo, tenemos el equipo principal con NGINX y queremos que la página no se cargue de este equipo sino que, cada vez que se haga la petición, se cargue de un equipo o de otro, eso nos permite que, si un equipo está saturado de peticiones, la carga la haga desde otro.
 
Tenemos el equipo que responde a www.ejemplo.com y dentro de esta red ( o de internet ) tenemos otros equipos con la misma página o contenido, cada vez que se haga una petición a www.ejemplo.com, se cargará la web de uno de los nodos especificados en la configuración del nodo de balanceo, siendo menos costoso para el equipo principal.

Revisión actual - 08:14 27 jun 2024

NGINX
NGINX
DesarrolladorIgor Sysoev
Datos técnicos
Webhttps://nginx.org/
GeneroServidor web, Proxy
LicenciaLicencia BSD simplificada

Introducción

Nginx (pronunciado en inglés «ényin-ex», /ˈɛndʒɪn-ɛks/)​ es un servidor web/Proxy inverso ligero de alto rendimiento y un proxy para protocolos de correo electrónico (IMAP/POP3).​

Es software libre y de código abierto, licenciado bajo la Licencia BSD simplificada; también existe una versión comercial distribuida bajo el nombre de Nginx Plus.​ Es multiplataforma, por lo que corre en sistemas tipo Unix (GNU/Linux, BSD, Solaris, Mac OS X, etc.) y Windows.

El sistema es usado por una larga lista de sitios web conocidos,​ como: WordPress, Netflix, Hulu, GitHub, Ohloh, SourceForge, TorrentReactor y partes de Facebook (como el servidor de descarga de archivos zip pesados).


Su creador, Igor Sysoev, en su página personal desde 2009 escribe el nombre totalmente en minúsculas,​ mientras que el nombre de la empresa propietaria desde 2011 lo escribe totalmente en mayúsculas,​ lo cual se corresponde con el nombre que devuelve el encabezado HTTP en todas y cada una de las solicitudes de conexión con que inicia la visita de cada página web.

Para complicar más el asunto el logotipo tiene caracteres tanto en mayúsculas y minúsculas del alfabeto cirílico,​ no obstante se ha logrado un consenso en denominar nginx al servidor web,​ NGINX a los productos y servicios derivados que maneja la empresa y Nginx para referirse a ambos en conjunto.

Comparación con Apache

Nginx fue inicialmente desarrollado con el fin explícito de superar el rendimiento ofrecido por el servidor web Apache.​ Sirviendo archivos estáticos, Nginx usa dramáticamente menos memoria que Apache, y puede manejar aproximadamente cuatro veces más solicitudes por segundo. Este aumento de rendimiento viene con un costo de disminuida flexibilidad, como por ejemplo la capacidad de anular las configuraciones de acceso del sistema por archivo (Apache logra esto con un archivo .htaccess, mientras que Nginx no tiene desarrollada tal funcionalidad). Anteriormente, incorporar módulos de terceros en Nginx requería recompilar la aplicación fuente con los módulos enlazados estáticamente. Esto fue parcialmente superado en la versión 1.9.11 de febrero de 2016, con la adición de carga dinámica de módulos. Sin embargo, los módulos aun deben ser compilados al mismo tiempo que Nginx, y no todos los módulos son compatibles con este sistema; algunos requieren el antiguo proceso de enlazado estático.

Instalación

En nuestros servidores Fedora o derivados podemos instalarlo con:

sudo dnf install nginx php-fpm

Añado el paquete "php-fpm" para tener la integración con el lenguaje PHP. Una vez instalado lo iniciamos:

sudo systemctl start nginx php-fpm

Y lo habilitamos para persistir el servicio en el inicio de sistema:

sudo systemctl enable nginx php-fpm

Seguimos añadiendo una regla permanente del cortafuegos:

sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https

Y recargamos el cortafuegos:

sudo firewall-cmd --reload

Ahora basta con abrir el navegador web y escribir la IP del servidor web:, por ejemplo:

http://192.168.1.3

Y ya debería mostrar la página de ejemplo.

Antes que nada, no abrimos https porque el servicio está configurado para tener el SSL comentado.

Estructura de ficheros y directorios

Como todos los servicios instalados, el directorio de configuración se encuentra en:

/etc/nginx

De todos los ficheros nos quedaremos con el fichero de configuración:

nginx.conf

En el que se muestra la configuración general del servidor como el directorio, el puerto de trabajo y que, como es recomendable, las configuraciones adicionales se realizan en la linia:

include /etc/nginx/conf.d/*.conf;

Es decir, aplicará todos los ficheros con extensión "conf" de este directorio. Por defecto, el directorio de publicación es:

/usr/share/nginx/hmtl

Aunque podemos cambiar el directorio, pero recordemos que hay que aplicar las reglas de SELinux para el directorio. Por otro lado, el registro de la navegación se encuentra en los ficheros:

/var/log/nginx/access.log ##para los registros de acceso /var/log/nginx/error.log ##Para los errores de carga de páginas.

NOTA - en la navegación, entre otras cosas, se muestra el navegador utilizado.

Configuraciones

A continuación vamos a explicar las configuraciones más utilizadas por este servicio:

Balanceo de carga

Esta opción nos permite a un equipo nodo poder permitir que una página web se cargue por otros equipos, por ejemplo, tenemos el equipo principal con NGINX y queremos que la página no se cargue de este equipo sino que, cada vez que se haga la petición, se cargue de un equipo o de otro, eso nos permite que, si un equipo está saturado de peticiones, la carga la haga desde otro.

Tenemos el equipo que responde a www.ejemplo.com y dentro de esta red ( o de internet ) tenemos otros equipos con la misma página o contenido, cada vez que se haga una petición a www.ejemplo.com, se cargará la web de uno de los nodos especificados en la configuración del nodo de balanceo, siendo menos costoso para el equipo principal.