Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Sitio web oficial de Nginx: http://nginx.org
Nginx es un servidor proxy inverso y HTTP de alto rendimiento, de código abierto y gratuito, un servidor proxy de correo electrónico y un servidor proxy TCP/UDP.
Otras versiones secundarias de nginx:
Tengine
Un proyecto de servidor web iniciado por Taobao. Basado en Nginx, agrega muchas funciones y características avanzadas para satisfacer las necesidades de los sitios web de gran tráfico. El rendimiento y la estabilidad de Tengine se han probado exhaustivamente en sitios web grandes como Taobao, Tmall Mall, etc. Su objetivo final es crear una plataforma web eficiente, estable, segura y fácil de usar.A partir de diciembre de 2011, Tengine se convirtió en un proyecto de código abierto.
Sitio web oficial: http://tengine.taobao.org/
Abrir Resty
Plataforma web de alto rendimiento basada en lenguaje Nginx y Lua
Sitio web oficial: http://openresty.org/cn/
Introducción a la función Nginx
Servidor de recursos web estáticos html, imágenes, js, css, txt y otros recursos estáticos
Proxy inverso para el protocolo http/https
Combinado con FastCGI/uWSGI/SCGI y otros protocolos para revertir solicitudes de recursos dinámicos de proxy
Solicitar reenvío del protocolo tcp/udp (proxy inverso)
Proxy inverso para protocolo imap4/pop3
Caracteristicas basicas
Diseño modular, buena escalabilidad.
Alta fiabilidad
Admite implementación en caliente: actualice archivos de configuración, actualice versiones y reemplace archivos de registro sin tiempo de inactividad
Bajo consumo de memoria: 10.000 conexiones inactivas en modo de conexión permanente solo requieren 2,5 M de memoria
controlado por eventos, aio, mmap, sendfile
Funciones relacionadas con el servicio web
Host virtual (servidor)
Admite conexiones de canalización y de mantenimiento de conexión (usando una conexión para realizar múltiples solicitudes)
Registro de acceso (admite el almacenamiento en búfer de registros para mejorar su rendimiento)
reescritura de url
alias de ruta
Control de acceso IP y basado en usuarios
Límite de tasa de soporte y límite de concurrencia
Reconfiguración y actualizaciones en línea sin interrumpir los flujos de trabajo del cliente
Estructura del proceso Nginx
Nginx es un modelo de organización multiproceso y está compuesto por un proceso maestro y un proceso de trabajo.
Funciones del proceso maestro:
对外接口:接收外部的操作(信号)
对内转发:根据外部的操作的不同,通过信号管理 Worker
监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
读取Nginx 配置文件并验证其有效性和正确性
建立、绑定和关闭socket连接
按照配置生成、管理和结束工作进程
接受外界指令,比如重启、升级及退出服务器等指令
不中断服务,实现平滑升级,重启服务并应用新的配置
开启日志文件,获取文件描述符
不中断服务,实现平滑升级,升级失败进行回滚处理
编译和处理perl脚本
Funciones del proceso de trabajo:
所有 Worker 进程都是平等的
实际处理:网络请求,由 Worker 进程处理
Worker进程数量:一般设置为核心数,充分利用CPU资源,同时避免进程数量过多,导致进程竞争CPU资源,
增加上下文切换的损耗
接受处理客户的请求
将请求依次送入各个功能模块进行处理
I/O调用,获取响应数据
与后端服务器通信,接收后端服务器的处理结果
缓存数据,访问缓存索引,查询和调用缓存数据
发送请求结果,响应客户的请求
接收主程序指令,比如重启、升级和退出等
Introducción al módulo Nginx
Módulo principal: es un módulo esencial para el funcionamiento normal del servidor Nginx. Proporciona funciones básicas como registro de errores, análisis de archivos de configuración, mecanismo controlado por eventos y gestión de procesos.
Módulo HTTP estándar: proporciona funciones relacionadas con el análisis del protocolo HTTP, como: configuración de puerto, configuración de codificación de página web, configuración del encabezado de respuesta HTTP, etc.
Módulo HTTP opcional: se utiliza principalmente para ampliar las funciones HTTP estándar para que Nginx pueda manejar algunos servicios especiales, como: transmisión multimedia Flash, análisis de solicitudes GeoIP, compresión de transmisión de red, compatibilidad con protocolo de seguridad SSL, etc.
Módulo de servicio de correo: se utiliza principalmente para admitir el servicio de correo Nginx, incluida la compatibilidad con el protocolo POP3, el protocolo IMAP y el protocolo SMTP.
Módulo de servicio de transmisión: implementa la función de proxy inverso, incluido el proxy del protocolo TCP
Módulo de terceros: sirve para ampliar la aplicación del servidor Nginx y completar funciones definidas por el desarrollador, como: compatibilidad con Json, compatibilidad con Lua, etc.
versión nginx
La versión principal es la versión de desarrollo principal, generalmente un número de versión impar, como 1.19
La versión estable es la última versión estable, generalmente una versión par, como por ejemplo: 1.20
Versiones heredadas, versiones estables antiguas, generalmente versiones pares, como: 1.18
Nginx se puede instalar usando yum o código fuente, pero se recomienda usar código fuente para compilar e instalar.
La versión de yum es anterior.
La compilación y la instalación pueden facilitar la personalización de rutas relacionadas. El uso de la compilación del código fuente puede personalizar las funciones relacionadas, lo que lo hace más conveniente para el uso comercial.
El contenedor Docker se ejecuta directamente
[root@Rocky8 ~]#vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@Rocky8 ~]#yum -y install nginx
[root@Rocky8 ~]#rpm -q nginx
nginx-1.26.1-2.el8.ngx.x86_64
Nginx está escrito en lenguaje C, por lo que la instalación del código fuente de Nginx requiere la preparación previa de un compilador estándar. El nombre completo de GCC es (colección de compiladores GNU). Está desarrollado por GNU y tiene licencia GPL o LGPL. -como Apple El compilador estándar para computadoras Mac OS. Para otros idiomas, la herramienta Automake también es necesaria para completar la creación automática de Makefile. Algunos módulos de Nginx deben depender de bibliotecas de terceros, como: pcre (admite reescritura). ), zlib (admite el módulo gzip) y openssl (admite el módulo ssl), etc.
Dirección de descarga del paquete de código fuente oficial: https://nginx.org/en/download.html
# 安装依赖包
[root@Ubuntu2204 ~]#apt update
[root@Ubuntu2204 ~]#apt -y install gcc make libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev
[root@Ubuntu2204 ~]#useradd -r -s /sbin/nologin nginx
[root@Ubuntu2204 ~]#cd /usr/local/src/
[root@Ubuntu2204 src]#wget https://nginx.org/download/nginx-1.22.1.tar.gz
[root@Ubuntu2204 src]#tar xf nginx-1.22.1.tar.gz
[root@Ubuntu2204 src]#cd nginx-1.22.1/
[root@Ubuntu2204 nginx-1.22.1]#./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
[root@Ubuntu2204 nginx-1.22.1]#make && make install
[root@Ubuntu2204 nginx-1.22.1]#chown -R nginx.nginx /apps/nginx
[root@Ubuntu2204 nginx-1.22.1]#ln -s /apps/nginx/sbin/nginx /usr/sbin/
# 启动nginx
[root@Ubuntu2204 nginx-1.22.1]#cd
[root@Ubuntu2204 ~]#nginx
[root@Ubuntu2204 ~]#ss -nlt
# 关闭nginx
[root@Ubuntu2204 ~]#nginx -s stop
[root@Ubuntu2204 ~]#ss -nlt
# 创建 Nginx 自启动文件
复制同一版本的nginx的yum安装生成的service文件
[root@Ubuntu2204 ~]#vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/run/nginx.pid
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
# 创建pid文件存放的目录
[root@Ubuntu2204 ~]#mkdir /apps/nginx/run/
# 修改配置文件
[root@Ubuntu2204 ~]#vim /apps/nginx/conf/nginx.conf
pid /apps/nginx/run/nginx.pid;
# 验证 Nginx 自启动文件
[root@Ubuntu2204 ~]#systemctl daemon-reload
[root@Ubuntu2204 ~]#systemctl enable --now nginx.service
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /lib/systemd/system/nginx.service.
[root@Ubuntu2204 ~]#ll /apps/nginx/run/
-rw-r--r-- 1 root root 6 Jul 11 09:45 nginx.pid
[root@Ubuntu2204 ~]#ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
[root@Ubuntu2204 ~]#systemctl stop nginx.service
[root@Ubuntu2204 ~]#systemctl status nginx.service
[root@Ubuntu2204 ~]#ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
# 验证 Nginx 自启动
[root@Ubuntu2204 ~]#reboot
[root@Ubuntu2204 ~]#ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
[root@Ubuntu2204 ~]#systemctl status nginx.service
● nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-07-11 09:48:58 CST; 1min 5s ago
Docs: https://nginx.org/en/docs/