Directorio
1. Introducción
2. Instalación
3. Archivo de configuración detallado
4. Principio de funcionamiento
5. Hospedaje de proyectos .NET Core en Linux
6. Equilibrio de carga del proyecto .NET Core en Linux
7. Alta disponibilidad de Nginx + Keepalived para el proyecto .NET Core en Linux (modo maestro-esclavo)
8. Proyecto .NET Core Nginx + Keepalived alta disponibilidad bajo Linux (modo maestro dual)
9. Clúster de alta disponibilidad LVS + Keepalived + Nginx para el proyecto .NET Core en Linux
10. Construye un servidor estático
11. Análisis de registro
12. Estrategia de optimización
13. Resumen
Aquí no voy a presentar cómo implementar .Net Core y procesar la supervisión de demonios en Linux. Si es necesario, puede ver los artículos publicados anteriormente. " Implementación de .NET Core Project en Linux (Centos7) (6) Lanzamiento de .NET Core Project en Linux ", " Implementación de .NET Core Project en Linux (Centos7) (7) Inicio y detención de .NET Core Project ", " .NET Core El proyecto se implementa en Linux (Centos7) (ocho) para crear la supervisión del tutor del proceso Supervisor para el proyecto .NET Core .
ASP.NET Core tiene un servidor Kestrel incorporado, pero la función es simple. No es un servidor web con todas las funciones. Se utiliza principalmente para SelfHost. Está diseñado para hacer que ASP.NET sea lo más rápido posible, pero su capacidad para administrar la seguridad y proporcionar archivos estáticos es limitada. La operación formal aún debe depender de IIS, Apache, Nginx y otros servidores con todas las funciones para proporcionar a los programas ASP.NET Core características o funciones avanzadas como almacenamiento en caché, solicitudes de compresión y terminales SSL. La relación entre estos dos servidores es: Nginx, IIS, etc. como servidor proxy inverso de Kestrel.
1. Configuración de mapeo de puertos
#Edit nginx.conf sudo vim /etc/nginx/nginx.conf #Después de ingresar el archivo, presione "i" o "a" para ingresar al modo de inserción, inserte la siguiente información de configuración
Entre y comente la configuración predeterminada del servidor en la configuración http
# Para obtener más información sobre la configuración, consulte: # * Documentación oficial en inglés: http://nginx.org/en/docs/ # * Documentación oficial en ruso: http://nginx.org/ru/docs/ user nginx; trabajador_procesos auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Cargar módulos dinámicos. Ver /usr/share/doc/nginx/README.dynamic. incluir /usr/share/nginx/modules/*.conf; eventos { trabajador_conecciones 1024; } http { log_format main '$ remote_addr - $ remote_user [$ time_local] "$ request"' '$ status $ body_bytes_sent "$ http_referer"' '"$ http_user_agent" " access_log /var/log/nginx/access.log main; enviar archivo; tcp_nopush en; tcp_nodelay on; keepalive_timeout 65; tipos_hash_max_size 2048; incluir /etc/nginx/mime.types; default_type application / octet-stream; # Cargue archivos de configuración modular desde el directorio /etc/nginx/conf.d. # Consulte http://nginx.org/en/docs/ngx_core_module.html#include # para obtener más información. incluir /etc/nginx/conf.d/*.conf; # server { # listen 80 default_server; # listen [::]: 80 default_server; # nombre del servidor _; # root / usr / share / nginx / html; # # # Carga archivos de configuración para el bloque de servidor predeterminado. # include /etc/nginx/default.d/*.conf; # # ubicación / { #} # # error_page 404 /404.html; # location = /40x.html { #} # # error_page 500 502 503 504 /50x.html; # location = /50x.html { #} #} # Configuración para un servidor habilitado para TLS. # # servidor { # escucha 443 ssl http2 default_server; # listen [::]: 443 ssl http2 default_server; # nombre del servidor _; # root / usr / share / nginx / html; # # # ssl_certificate "/etc/pki/nginx/server.crt"; # ssl_certificate_key "/etc/pki/nginx/private/server.key"; # ssl_session_cache compartido: SSL: 1m; # ssl_session_timeout 10m; # ssl_ciphers HIGH:! aNULL:! MD5; # ssl_prefer_server_ciphers en; # # # Carga archivos de configuración para el bloque de servidor predeterminado. # include /etc/nginx/default.d/*.conf; # # ubicación / { #} # # error_page 404 /404.html; # ubicación = /40x.html { #} # # error_page 500 502 503 504 /50x.html; # ubicación = /50x.html { #} #} }
# Presione ESC, ingrese el comando para guardar el archivo de configuración : wq (guardar la salida de la operación de edición) : wq! (Guardar la salida de la fuerza de edición) : w! Sudo tee%
Después de anotar la asignación original, necesitamos crear un nuevo archivo DemoNetCore.conf para el proyecto .Net Core en la carpeta /etc/nginx/conf.d. La configuración del archivo es la siguiente
#Introduzca la carpeta conf.d cd /etc/nginx/conf.d #Cree el archivo de configuración sudo touch DemoNetCore.conf # Edite el archivo de configuración sudo vim DemoNetCore.conf # Servidor de información del archivo de configuración { listen 80; location / { proxy_pass http: / / localhost: 8081; proxy_http_version 1.1; proxy_set_header Upgrade $ http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $ host; proxy_cache_bypass $ http_upgrade; } }
Después de la configuración, reinicie Nginx. Al reiniciar, puede informar directamente un error, como se muestra a continuación
# 重启 Nginx sudo systemctl restart nginx
En este momento, primero encontramos el proceso relacionado con Nginx, luego matamos directamente y luego comenzamos
#Ver proceso Nginx ps aux | grep nginx # matar procesos relacionados sudo kill -9 2058 sudo kill -9 2059 #reiniciar Nginx sudo systemctl restart nginx
2. Verificar el efecto
Aquí se muestra 502 Bad Gateway, el motivo es el problema de la configuración de SELinux
Security-Enhanced Linux (SELinux para abreviar) es un módulo de kernel de Linux y un subsistema de seguridad de Linux.
SELinux fue desarrollado principalmente por la Agencia de Seguridad Nacional. Los módulos SELinux se han integrado en los núcleos de Linux de la versión 2.6 y superiores.
La estructura y configuración de SELinux es muy complicada, y hay muchas cosas conceptuales, es más difícil de aprender. Muchos administradores de sistemas Linux cerraron SELinux debido a problemas.
Si puede dominar SELinux y usarlo correctamente, creo que todo el sistema básicamente puede llegar al punto de "irrompible" (recuerde siempre que no hay seguridad absoluta).
Dominar los conceptos básicos y los métodos de configuración simples de SELinux es un curso obligatorio para todos los administradores de sistemas Linux.
Entonces, hay dos soluciones a este problema:
①, cierra SELinux directamente
# Ingrese el directorio SELinux cd / etc / selinux # Edite el archivo de configuración de configuración de selinux sudo vim config # Modifique la configuración: SELINUX = deshabilitado, guarde y salga
Después de guardar, cambie de forzado o permisivo a diableado, que debe reiniciarse para que surta efecto. Cuando reiniciamos, podemos ver que la siguiente imagen es normal.
② Agregue Nginx a la lista blanca de SELinux
yum -y instalar policycoreutils-python cat /var/log/audit/audit.log | grep nginx | grep denegado | audit2allow -M mynginx semodule -i mynginx.pp