1. Descripción general de Nginx
Nginx es un servidor proxy inverso y HTTP de alto rendimiento, así como un servidor proxy IMAP/POP3/SMTP. Nginx se usa ampliamente en el desarrollo web del lado del servidor, principalmente para proporcionar servicios de acceso web eficientes y estables. Las características principales de Nginx incluyen: altas capacidades de procesamiento de conexiones concurrentes, alta estabilidad, configuración flexible y funciones ricas.
1.1 El papel de Nginx
Las principales funciones de Nginx se pueden dividir en los siguientes aspectos:
-
Servicio de recursos estáticos : a través de protocolos eficientes de transferencia de archivos, Nginx puede proporcionar rápidamente a los usuarios servicios de páginas web estáticas.
-
Proxy inverso : Nginx se puede utilizar como servidor proxy inverso para lograr el equilibrio de carga y mejorar la velocidad y la estabilidad del acceso al sitio web.
-
Equilibrio de carga : al asignar diferentes solicitudes a diferentes servidores backend, Nginx puede lograr el equilibrio de carga y mejorar la disponibilidad del servicio.
-
Servidor HTTP : Nginx también se puede utilizar como servidor HTTP para manejar solicitudes HTTP.
-
Servidor proxy de correo : Nginx también se puede utilizar como servidor proxy IMAP/POP3/SMTP.
1.2 Ventajas de Nginx
-
Altas capacidades de procesamiento concurrente : Nginx utiliza un modelo de arquitectura basado en eventos y puede manejar una gran cantidad de conexiones simultáneas.
-
Alta eficiencia en el uso de memoria : Nginx ocupa un espacio de memoria muy pequeño y se puede mantener en un nivel bajo incluso cuando se procesa una gran cantidad de solicitudes simultáneas.
-
Alta estabilidad : Nginx tiene una estabilidad muy alta y puede mantener un funcionamiento estable incluso en entornos de alta concurrencia y alta carga.
-
Configuración flexible : el formato del archivo de configuración de Nginx es simple y claro, y puede responder de manera flexible a diversas necesidades.
-
Funciones ricas : Nginx tiene una gran cantidad de módulos y funciones integrados, como compresión gzip, reescritura de URL, compatibilidad con SSL, etc.
2. Configuración básica de Nginx
Los archivos de configuración de Nginx generalmente se encuentran en las rutas /etc/nginx/nginx.conf
, o en /usr/local/nginx/conf
, /usr/local/etc/nginx
etc. Antes de realizar la configuración, debe tener cierto conocimiento del archivo de configuración de Nginx.
2.1 Estructura del archivo de configuración de Nginx
El archivo de configuración de Nginx consta de directivas y bloques. Las instrucciones van seguidas de parámetros, separados por espacios, y cada instrucción ;
termina con un punto y coma. Los bloques están encerrados entre llaves {}
y pueden contener instrucciones u otros bloques.
Los principales bloques de configuración son:
-
main (configuración global) : configura instrucciones que afectan a nginx globalmente. Incluyendo el usuario que ejecuta el servidor nginx, la ruta de almacenamiento PID del proceso nginx, la ruta de registro, la introducción del archivo de configuración, la cantidad de procesos de trabajo que se pueden generar, etc.
-
eventos : la configuración afecta el servidor nginx o la conexión de red del usuario.
-
http : Se pueden anidar varios servidores para configurar la mayoría de funciones como proxy, caché, definición de registros, etc. y la configuración de módulos de terceros.
-
servidor : Configure los parámetros relevantes del host virtual, puede haber varios en un http.
-
ubicación : Configure el enrutamiento de solicitudes y el procesamiento de varias páginas.
2.2 Ejemplo de configuración básica
A continuación se muestra un ejemplo de un archivo de configuración básico de Nginx:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
En este archivo de configuración, Nginx nginx
se ejecuta como usuario, utilizando un proceso de trabajo, y la ruta del registro de errores es /var/log/nginx/error.log
. El número máximo de conexiones permitidas por proceso de trabajo es 1024. El módulo HTTP incluye un host virtual que escucha en el puerto 80, el nombre del servidor es localhost, el directorio raíz del archivo estático es /usr/share/nginx/html
y la página de inicio predeterminada es index.html
o index.htm
.
2.3 Explicación detallada de los archivos de configuración
-
usuario : el usuario y grupo de usuarios bajo el que se ejecuta Nginx. Por ejemplo:
user www www;
-
Workers_processes : la cantidad de procesos de trabajo, generalmente igual a la cantidad de CPU.
-
error_log : ruta del registro de errores, puede especificar el nivel, como
error_log /var/log/nginx/error.log warn;
. Los niveles de error de menor a mayor son: depuración, información, aviso, advertencia, error, crítico, alerta y emergencia. -
pid : la ruta al archivo PID que almacena el proceso principal.
-
Workers_connections : el número máximo de conexiones permitidas por proceso de trabajo.
-
incluir : introduce otros archivos de configuración.
-
default_type : tipo de archivo predeterminado, el valor predeterminado es
application/octet-stream
. -
access_log : ruta del registro de acceso.
-
sendfile : permite que el método sendfile transfiera archivos.
-
keepalive_timeout : tiempo de espera de conexión largo, la unidad es segundos.
-
servidor : configura un host virtual.
-
escuchar : puerto de escucha.
-
nombre_servidor : nombre del servidor.
-
ubicación : URI utilizado para manejar solicitudes.
-
raíz : se utiliza para especificar el directorio raíz para el procesamiento de solicitudes.
-
índice : nombre de archivo de la página de inicio predeterminada.
-
error_page : página de manejo de errores.
3. Configuración avanzada de Nginx
Además de la configuración básica, Nginx también tiene muchas configuraciones avanzadas, como proxy inverso, equilibrio de carga, reescritura de URL, etc.
3.1 Configuración de proxy inverso
Nginx se puede utilizar como servidor proxy inverso para reenviar las solicitudes de los clientes al servidor backend. Esto puede ocultar la dirección real del servidor y mejorar la seguridad del servidor. proxy_pass
La configuración del proxy inverso es muy simple: solo necesita usar las instrucciones en el bloque de ubicación para especificar la dirección del servidor backend.
Por ejemplo:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8080;
}
}
En esta configuración, todas example.com
las solicitudes de se reenviarán a localhost:8080
.
3.2 Configuración de equilibrio de carga
Nginx puede lograr equilibrio de carga y distribuir solicitudes a múltiples servidores backend para mejorar la disponibilidad y el rendimiento del servicio. Nginx admite una variedad de algoritmos de equilibrio de carga, incluidos sondeos, conexiones mínimas, hash de IP, etc.
A continuación se muestra una configuración de equilibrio de carga utilizando el algoritmo de operación por turnos:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
En esta configuración, backend1.example.com
, backend2.example.com
y backend3.example.com
se turnarán para manejar las solicitudes.
3.3 Configuración de reescritura de URL
Nginx puede rewrite
implementar la reescritura de URL mediante instrucciones para convertir la URL solicitada en otra URL. Esto es muy útil para implementar funciones como la optimización de motores de búsqueda y la migración de sitios web.