Tutorial 2 de Nginx en Centos7

En el tutorial 2 de Centos7 Nginx, los registros existentes del
manual de corte de registros de Nginx
se almacenarán en el archivo access.log, pero a medida que pase el tiempo, el contenido de este archivo se volverá más y más, el volumen se hará más y más grande, inconveniente El personal de operación y mantenimiento lo verifica, por lo que podemos cortar este archivo de registro grande en varios archivos pequeños diferentes como registros. La regla de corte puede ser en unidades de días. Si hay cientos de registros G o T por día, puede Corte el registro cada medio día o cada hora según sea necesario.

1. Cree un archivo ejecutable de shell: cut_my_log.sh, el contenido es:

#!/bin/bash
LOG_PATH="/var/log/nginx/"
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
PID=/var/run/nginx/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log

#向Nginx主进程发送信号,用于重新打开日志文件
kill -USR1 `cat $PID`

2. Agregue permisos ejecutables para cut_my_log.sh:

chmod +x cut_my_log.sh

3. El resultado después de cortar el registro de prueba:

./cut_my_log.sh

Nginx log cutting-timing
1. Instale las tareas de sincronización:

yum -y install crontabs

2.crontab -e edita y agrega una nueva línea de tareas:

*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh

3. Reinicie la tarea programada:
service crond restart

Adjunto: Comandos de tareas programadas comunes:
service crond start // Iniciar service
service crond stop // Cerrar service
service crond restart // Reiniciar service
service crond reload // Recargar configuración
crontab -e // Editar tarea
crontab -l // Ver Lista de tareas

Expresión de tarea regular: la expresión de
Cron se divide en 5 o 6 campos, cada campo representa un significado, como se muestra a continuación:

Tiempo compartido, día, mes y semana (opcional)
Rango de valores 0-59 0-23 1-31 1-12 1-7 2019/2020/2021 /…

Ejecución cada minuto:
* / 1 * * * *
Todas las mañanas (23:59 todas las noches):
59 23 * * *
Todos los días a la 1 a.m.:
0 1 * * *

Capítulo Preguntas y respuestas sobre materiales Nota:
con tantas configuraciones, echemos un vistazo a las reglas de configuración de ubicación

root y alias
Si la ruta del servidor es: /home/huadaxia/files/img/face.png La
ruta raíz coincide exactamente con la
configuración de acceso cuando es:

location /huadaxia {
    root /home
}

Cuando el usuario visita, la solicitud es: url: port / huadaxia / files / img / face.png

alias puede hacer un alias para su ruta, transparente para los usuarios

location /hello {
    alias /home/huadaxia 
}

Cuando el usuario visita, la solicitud es: url: port / hello / files / img / face.png

Reglas de coincidencia para el
espacio de ubicación : coincidencia predeterminada, coincidencia normal

location / {
     root /home;
}

=:
Coincidencia exacta (es decir, en /home/huadaxia/img/face1.png) las personas fuera de esta imagen pueden acceder

location = /huadaxia/img/face1.png {
    root /home;
}

~ *: Concordancia de expresiones regulares, sensible a mayúsculas, que es todo / home siguiente imagen GIF sufijo | jpg | png | puede JPEG de acceso
# ajustan a la demostración de la imagen

location ~* .(GIF|jpg|png|jpeg) {
    root /home;
}

~: Coincide con la expresión regular, se
distingue entre mayúsculas y minúsculas #GIF para que coincida

location ~ .(GIF|jpg|png|jpeg) {
    root /home;
}

^ ~: Comience con una ruta de caracteres

location ^~ /huadaxia/img {
    root /home;
}

Compatibilidad con la configuración entre dominios de Nginx
En nuestro proyecto Springboot, el acceso entre dominios también es posible, por lo que he usado el modo de separación de front-end y back-end más común, y principalmente uso Nginx para configurar la separación entre dominios. Esta es la corriente principal.
Springboot
Inserte la descripción de la imagen aquí

在nginx中
#允许跨域请求的域,*代表所有
add_header 'Access-Control-Allow-Origin' *;
#允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如 GET/POST/PUT/DELETE
add_header 'Access-Control-Allow-Methods' *;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;

La configuración de la cadena antirrobo de Nginx, la cadena antirrobo es evitar que otros roben sus imágenes y otros recursos estáticos
. Hay muchas maneras de evitar
1: marca de agua, promoción de marca, ancho de banda, suficiente servidor
2: firewall, control directo, siempre que conozca la fuente IP
3: Estrategia de cadena antirrobo El siguiente método es dar directamente un mensaje de error 404
Inserte la descripción de la imagen aquí

#对源站点验证
valid_referers *.huadaxia.com; 
#非法引入会进入下方判断
if ($invalid_referer) {
    return 404;
}
listen       90;
    server_name  localhost;
    #允许跨域请求的域,*代表所有
    add_header 'Access-Control-Allow-Origin' *;
    #允许带上cookie请求
    add_header 'Access-Control-Allow-Credentials' 'true';
    #允许请求的方法,比如 GET/POST/PUT/DELETE
    add_header 'Access-Control-Allow-Methods' *;
    #允许请求的header
    add_header 'Access-Control-Allow-Headers' *;
    #对源站点验证
    valid_referers *.huadaxia.com;
    #非法引入会进入下方判断
    if ($invalid_referer) {
            return 404;
            }

ascendente: equilibrio de carga
De forma predeterminada, el
parámetro de comando ascendente max_conns se envía mediante sondeo

Se establece un proceso de trabajo, que es conveniente para probar y observar la cantidad de conexiones exitosas

worker_processes  1;

upstream tomcats {
        server 192.168.1.173:8080 max_conns=2;
        server 192.168.1.174:8080 max_conns=2;
        server 192.168.1.175:8080 max_conns=2;
}

El parámetro de comando ascendente
versión comercial slow_start , debe pagar

upstream tomcats {
        server 192.168.1.173:8080 weight=6 slow_start=60s;
#       server 192.168.1.190:8080;
        server 192.168.1.174:8080 weight=2;
        server 192.168.1.175:8080 weight=2;
}

Nota
Este parámetro no se puede usar en hash y balanceo de carga aleatorio.
Si solo hay un servidor en sentido ascendente, este parámetro no es válido.
Notas de preguntas y respuestas del capítulo Los
parámetros de comando ascendente down y backup
#down se usan para marcar el nodo de servicio como no disponible:

upstream tomcats {
        server 192.168.1.173:8080 down;
#       server 192.168.1.190:8080;
        server 192.168.1.174:8080 weight=1;
        server 192.168.1.175:8080 weight=1;
}

Copia de seguridad indica que el nodo del servidor actual es una máquina de copia de seguridad. Solo después de que todos los demás servidores estén inactivos, se unirán al clúster y los usuarios tendrán acceso a ellos:

upstream tomcats {
        server 192.168.1.173:8080 backup;
#       server 192.168.1.190:8080;
        server 192.168.1.174:8080 weight=1;
        server 192.168.1.175:8080 weight=1;
}

El parámetro de copia de seguridad no se puede usar en hash y balanceo de carga aleatorio.

Los parámetros del comando ascendente max_fails y fail_timeout cuando el
usuario accede a la solicitud son: url: port / huadaxia / files / img / face.pngmax_fails: indica que el servidor ha fallado varias veces, luego marque el servidor como inactivo y elimine el servicio ascendente.
fail_timeout: indica el tiempo de reintento fallido.
Suponga que la configuración actual es la siguiente:

max_fails = 2 fail_timeout = 15s

Significa que después de no solicitar un servidor 2 veces en 15 segundos, se considera que el servidor se ha colgado o caído, y luego 15 segundos más tarde, ninguna solicitud nueva llegará al nodo que acaba de colgar en 15 segundos En su lugar, solicitará un servidor normal. Después de 15 segundos, habrá una nueva solicitud para intentar conectarse al servidor bloqueado. Si aún falla, repita el proceso anterior hasta que se restablezca.

Keepalived mejora el rendimiento
keepalived: establece la cantidad de procesamiento de conexión larga
proxy_http_version: establece la versión http de conexión larga en 1.1
proxy_set_header: borra la información del encabezado de conexión

upstream tomcats {
#       server 192.168.1.173:8080 max_fails=2 fail_timeout=1s;
        server 192.168.1.190:8080;
#       server 192.168.1.174:8080 weight=1;
#       server 192.168.1.175:8080 weight=1;
        keepalive 32;
}

server {
        listen       80;
        server_name  www.tomcats.com;

        location / {
            proxy_pass  http://tomcats;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
        }
    }

Equilibrio de carga ip_hash
ip_hash puede garantizar que los usuarios accedan a servidores fijos que se pueden solicitar a los servicios ascendentes, siempre que la IP del usuario no haya cambiado.
Puntos a tener en cuenta al usar ip_hash:
no puede eliminar directamente el servidor de fondo, solo puede marcarlo.

upstream tomcats {
        ip_hash;

        server 192.168.1.173:8080;
        server 192.168.1.174:8080 down;
        server 192.168.1.175:8080;
}

Lo siguiente solo cuenta los primeros tres dígitos. Por ejemplo, si su ip es 192.168.1. *, Entonces el algoritmo iphash se predetermina a los primeros tres dígitos, por lo que si está en la intranet, solo uno le dará acceso,
Inserte la descripción de la imagen aquí
pero si hay alguno, También es muy problemático, es decir, cuando pierde un tomcat (tiempo de inactividad), entonces hay un nuevo problema: la sesión del usuario debe guardarse y otra, la mayor parte de la sesión cambiará, por lo que tenemos que usar el siguiente algoritmo de coherencia hash para ser
Inserte la descripción de la imagen aquí
coherente ¿Cómo resuelve este problema la sesión sexual? Se garantiza que solo el usuario que está inactivo se conectará al servidor. La sesión de otras personas es la misma.
Puede considerarlo como una línea recta con el algoritmo hash consistente, y los siguientes 0 y 2 se reducen por la potencia de 32 Como una dirección,
Inserte la descripción de la imagen aquí
trátelos como un anillo, y hay tantos nodos cuando el nodo 3 está inactivo, por lo que otros usuarios no necesitan cambiar el servidor,
Inserte la descripción de la imagen aquí
solo afectan a los usuarios conectados al nodo 3, otros usuarios no se ven afectados
Inserte la descripción de la imagen aquí

consistent_hash
upstream tomcats {
        consistent_hash $request_uri;

        server 192.168.1.173:8080;
        server 192.168.1.174:8080 down;
        server 192.168.1.175:8080;
}

Equilibrio de carga url_hash y least_conn de
acuerdo con la dirección url de cada solicitud, después de realizar un hash para visitar un nodo de servidor fijo. (Automático)

upstream tomcats {
    # url hash
    hash $request_uri;
    # 最少连接数
    # least_conn

    server 192.168.1.173:8080;
    server 192.168.1.174:8080;
    server 192.168.1.175:8080;
}


server {
    listen 80;
    server_name www.tomcats.com;

    location / {
        proxy_pass  http://tomcats;
    }
}

Caché Nginx Caché del
navegador:
acelere el acceso del usuario, mejore la experiencia de un solo usuario (visitante del navegador), almacene en caché en el
caché local de Nginx
Cache en el lado nginx, aumente todos los usuarios que visitan el lado nginx y aumente
la velocidad de acceso al servidor ascendente
El acceso del usuario seguirá generando tráfico de solicitudes.
Controle el caché del navegador:

location /files {
    alias /home/huadaxia;
    # expires 10s;
    # expires @22h30m;
    # expires -1h;
    # expires epoch;
    # expires off;
    expires max;
}

Inserte la descripción de la imagen aquí
Caché de proxy inverso Nginx

#keys_zone 设置共享内存以及占用空间大小
#keys_zone 设置共享内存以及占用的空间大小
#max_size 设置缓存大小
#inactive 超过此时间则缓存自动清理
#use_temp_path 关闭零时目录
proxy_cache_path /usr/local/nginx/upsteam_cache keys_zone=mycache:5m max_size=1g inactive=30s use_temp_path=off



location / {
    proxy_pass  http://tomcats;

    # 启用缓存,和keys_zone一致
    proxy_cache mycache;
    # 针对200和304状态码缓存时间为8小时
    proxy_cache_valid   200 304 8h;
}

Inserte la descripción de la imagen aquí

Use Nginx para configurar el certificado de nombre de dominio HTTPS.
La premisa es que debe tener un nombre de dominio. Si no, vaya a Alibaba Cloud o Tencent Cloud para solicitar uno.

  1. Instalar módulo SSL
  2. Instale el módulo SSL
    Para configurar https en nginx, debe instalar el módulo ssl, que es: http_ssl_module.
    Vaya al directorio de descompresión de nginx: /home/software/nginx-1.16.1
    add ssl module (los módulos originales deben conservarse)
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi  \
--with-http_ssl_module

Compilar e instalar
make
make install

Configure HTTPS
para copiar el certificado SSL * .crt y la clave privada * .key en el directorio / usr / local / nginx / conf

Configurar como lo hago

server {
listen       443 ssl;
 server_name 你的域名;
root html;
keepalive_timeout 70;
location / {
        root   html;
        index index.html index.htm;
        }
ssl_protocols        TLSv1 TLSv1.1 TLSv1.2;
 ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
 ssl_certificate     你自己的pem.pem;
 ssl_certificate_key 你自己的key.key;
ssl_session_cache    shared:SSL:10m;
 ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;

}

Inserte la descripción de la imagen aquí

Si te resulta útil, por favor dame un visto bueno

8 artículos originales publicados · Me gusta 89 · Visitas 30,000+

Supongo que te gusta

Origin blog.csdn.net/BryantJamesHua/article/details/105553528
Recomendado
Clasificación