En https://blog.csdn.net/qq_42301302/article/details/106135265 hemos instalado nginx en el directorio / usr / local / nginx, y sus archivos de configuración predeterminados se colocan en el directorio conf de este directorio, y el principal El archivo de configuración nginx.conf también está en él. El uso de nginx es básicamente una modificación correspondiente de este archivo de configuración, por lo que necesitamos entender aproximadamente la estructura del archivo de configuración nginx.
1. La estructura principal de nginx.conf
Abra el archivo nginx, el contenido es el siguiente:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
El comienzo representa el contenido del comentario, elimine todos los párrafos que comiencen con #, y el contenido del archivo simplificado es el siguiente:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Según el contenido del archivo, se puede ver que el archivo de configuración nginx.conf se puede dividir en tres partes:
Segundo, el bloque global
Desde el comienzo del archivo de configuración hasta el contenido del bloque de eventos, se establecerán algunas instrucciones de configuración que afectarán el funcionamiento general del servidor nginx, incluida principalmente la configuración del usuario (grupo) que ejecuta el servidor Nginx, la cantidad de procesos de trabajo que se permite generar, la ruta de almacenamiento del proceso PID y el registro. Ruta y tipo de almacenamiento, e introducción de archivos de configuración, etc.
Por ejemplo, la configuración de primera línea del contenido del archivo anterior:
worker_processes 1;
Esta es la configuración clave del servicio de procesamiento concurrente del servidor Nginx. Cuanto mayor sea el valor de worker_processes, más procesamiento concurrente podrá admitirse, pero estará restringido por hardware, software y otros equipos, que se describirán en detalle más adelante.
Tres, bloque de eventos
Por ejemplo, la configuración del contenido del archivo anterior:
events {
worker_connections 1024;
}
Los comandos involucrados en el bloque de eventos afectan principalmente la conexión de red entre el servidor Nginx y el usuario. Las configuraciones comúnmente utilizadas incluyen si habilitar la serialización de conexiones de red en múltiples procesos de trabajo, si permitir que se reciban múltiples conexiones de red al mismo tiempo y qué modelo impulsado por eventos se selecciona para el procesamiento Solicitud de conexión, el número máximo de conexiones que cada proceso de texto puede admitir al mismo tiempo, etc.
El ejemplo anterior indica que el número máximo de conexiones admitidas por cada proceso de trabajo es 1024.
Esta parte de la configuración tiene un mayor impacto en el rendimiento de Nginx y debe configurarse de manera flexible en la práctica.
Cuatro, bloque http
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Esta es la parte más frecuente de la configuración del servidor Nginx. La mayoría de las funciones como el proxy, la caché y la definición de registros, y la configuración de módulos de terceros, están todas aquí.
Nota: el bloque http también puede incluir el bloque global http y el bloque del servidor.
1. Las
instrucciones de configuración del bloque global http incluyen importación de archivos, definición de TIPO MIME, personalización del registro, tiempo de espera de conexión, límite superior de solicitudes de enlace único, etc.
2. Bloque servidor
Este bloque está estrechamente relacionado con el host virtual. Desde el punto de vista del usuario, el host virtual es exactamente igual que un host hardware independiente. Esta tecnología fue creada para ahorrar el costo del hardware del servidor de Internet. El concepto de alojamiento virtual se introducirá en detalle más adelante.
Cada bloque http puede incluir varios bloques de servidor y cada bloque de servidor es equivalente a un host virtual.
Cada bloque de servidor también se divide en un bloque de servidor global y puede contener varios bloques de ubicación al mismo tiempo.
2.1, bloque de servidor global
La configuración más común es la configuración de monitoreo del host de la máquina virtual y el nombre o la configuración de IP del host virtual.
2.2, bloque de ubicación
Un bloque de servidor puede configurar varios bloques de ubicación.
La función principal de este bloque se basa en la cadena de solicitud recibida por el servidor Nginx (por ejemplo, server_name / uri-string), para realizar la cadena que no sea el nombre de host virtual (o alias de IP) (por ejemplo, el / uri-string anterior) Coincidir para procesar solicitudes específicas. Aquí también se configuran funciones como la orientación de la dirección, el almacenamiento en caché de datos, el control de respuesta y muchos módulos de terceros.