- Hospedaje de ASP.NET Core en Linux: ¿por qué y cuándo?
- Requisitos previos y selección del servidor
- Instalación y configuración básicas (tiempo de ejecución .NET): ejemplo para Ubuntu
- Implementación sin contenedores: Kestrel + systemd + Nginx
- Implementación con Docker y Docker Compose
- Seguridad y mejores prácticas
- Optimización y monitorización del rendimiento
- Comparar ubicaciones y elegir la correcta según la aplicación
- Alta escalabilidad y disponibilidad
- Correcciones de errores comunes
- Consejos prácticos para la producción (DevOps)
- Resumen y ofertas de servicios
Hospedaje de ASP.NET Core en Linux: ¿por qué y cuándo?
ASP.NET Core funciona bien en Linux con *Kestrel*, y elegir esta plataforma para alojamiento puede proporcionar beneficios importantes, incluidos: Reducción de costos, compatibilidad con herramientas de código abierto y facilidad de contenedorización Esta opción es adecuada para sitios web, API, servicios en segundo plano y aplicaciones sensibles a la latencia, como juegos y comercio.
Requisitos previos y selección del servidor
Distribución de Linux y versión .NET
Las distribuciones sugeridas incluyen: Ubuntu LTS (20.04/22.04), Debian (11/12), y CentOS Stream o Rocky/Alma Son para producción. Para entornos con estricta seguridad de RHEL Utilice el entorno de ejecución y el SDK oficiales de Microsoft (por ejemplo, .NET 6/7/8).
Recursos de hardware y tipo de servicio
Para sitios web y API ligeras generalmente 1-2 vCPU, 1-4 GB de RAM y SSD NVMe Suficiente. Negocios y aplicaciones pesadas para 4+ vCPU y 8+ GB de RAM Y necesitan una red de alta velocidad.
Para comerciar y jugar con ping bajo Lo mejor es elegir un VPS localizado cerca de un centro de datos regional o de intercambio. Nuestra empresa cuenta con más de 85 ubicaciones en todo el mundo, lo que facilita la elección del centro de datos más cercano.
Utilice servidores gráficos (GPU) para IA/inferencia o renderizado; nuestra empresa ofrece servicio de GPU en la nube y servidor de cómputo con red de alta velocidad.
Para protegerse contra ataques, considere un servidor anti-DDoS y una red con BGP y CDN.
Instalación y configuración básicas (tiempo de ejecución .NET): ejemplo para Ubuntu
Para instalar el entorno de ejecución oficial de Microsoft, agregue el repositorio y luego instale el entorno de ejecución:
sudo apt update
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y dotnet-runtime-7.0A continuación, cree un directorio de aplicaciones y usuarios de servicio seguro:
sudo useradd -r -s /usr/sbin/nologin aspnetuser
sudo mkdir -p /var/www/myapp
sudo chown aspnetuser:aspnetuser /var/www/myapp
Implementación sin contenedores: Kestrel + systemd + Nginx
Publicar la aplicación y configurar systemd
Construya y publique la aplicación en la ruta del directorio de la aplicación:
dotnet publish -c Release -o /var/www/myappArchivo de unidad de ejemplo para systemd en /etc/systemd/system/myapp.service Lugar:
[Unit]
Description=My ASP.NET Core App
After=network.target
[Service]
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/dotnet /var/www/myapp/MyApp.dll
Restart=always
# Safe User/Group
User=aspnetuser
Group=aspnetuser
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.targetActivación y ejecución del servicio:
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo journalctl -u myapp -f
Configuración de Nginx como proxy inverso (terminación SSL)
Instalar Nginx y Certbot:
sudo apt install -y nginx certbot python3-certbot-nginxEjemplo de configuración de Nginx en /etc/nginx/sitios-disponibles/myapp Lugar:
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://127.0.0.1:5000;
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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Obtenga un certificado SSL gratuito:
sudo certbot --nginx -d example.com -d www.example.com
Implementación con Docker y Docker Compose
Ejemplo de Dockerfile de varios pasos para producir una imagen pequeña y optimizada:
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyApp.dll"]Ejemplo docker-compose.yml (también puedes usar nginx-proxy o Traefik):
version: '3.8'
services:
web:
build: .
ports:
- "5000"
environment:
- ASPNETCORE_ENVIRONMENT=Production
nginx:
image: nginx:stable
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./certs:/etc/letsencryptPara CI/CD, use GitLab CI o GitHub Actions para compilar, probar e implementar imágenes en el registro y luego subirlas al servidor. Nuestra empresa ofrece alojamiento de GitLab para equipos privados.
Seguridad y mejores prácticas
Red y firewall
Abra solo los puertos esenciales (80/443) y limite el acceso SSH a las direcciones requeridas.
sudo ufw allow 80,443/tcp
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp # مثال
sudo ufw enable
TLS y endurecimiento
Ataques y protección
Utilice fail2ban para proteger SSH y la limitación de velocidad en Nginx. Utilice servidores anti-DDoS para aplicaciones sensibles; nuestra empresa ofrece paquetes anti-DDoS y CDN con BGP.
SELinux / AppArmor
En distribuciones con SELinux habilitado (RHEL/CentOS), asegúrese de que los contextos de archivos y puertos estén configurados correctamente. En otras distribuciones, use AppArmor para la generación de perfiles; no se recomienda el apagado permanente.
Optimización y monitorización del rendimiento
Configuración de conexión y sintonización de Kestrel
Utilice HTTP/2 y Keep-Alive en la capa de proxy inverso. Tenga en cuenta las limitaciones de Kestrel en ajustes de la aplicación.json Establecer (por ejemplo, Limits.MaxConcurrentConnections, MaxRequestBodySize).
Utilice la compresión de respuestas (Brotli/Gzip) para comprimir las respuestas:
servicios.AddResponseCompression(opciones => { opciones.EnableForHttps = true; });
Caché y reuniones
Utilice Redis para la caché distribuida y el estado de la sesión para permitir el escalamiento horizontal. Utilice CDN para contenido estático y así reducir la carga del servidor.
Monitoreo y registro
Combine el registro estructurado con Serilog o Microsoft.Extensions.Logging y envíelo a ELK/Graylog. Para las métricas, utilice dotnet-counters, el exportador de Prometheus (dotnet_exporter) y Grafana. Un APM como Application Insights es útil para el seguimiento.
Comparar ubicaciones y elegir la correcta según la aplicación
Para operar, es importante un ping bajo y la estabilidad: elige una ubicación cercana a plataformas de intercambio o redes privadas. Para jugar, se recomiendan servidores regionales y VPS para juegos con una red de alta velocidad.
Para IA y renderizado, utilice GPU Cloud y servidores de cómputo con NVMe y alto ancho de banda. Para sitios web y aplicaciones, se recomienda una ubicación cercana a los usuarios principales y una combinación de CDN y multiregión para una mejor disponibilidad. Nuestra empresa ofrece más de 85 ubicaciones globales y una red CDN y BGP.
Alta escalabilidad y disponibilidad
Utilice un balanceador de carga de capa 7 (Nginx/HAProxy/Cloud LB) o un balanceador de carga de centro de datos. Almacene las sesiones en Redis o en una base de datos compartida. Horizontalice los contenedores y las máquinas virtuales para el escalado automático; utilice HPA en Kubernetes. Utilice BGP anycast y CDN para la distribución global del tráfico.
Correcciones de errores comunes
Casos comunes y métodos de examen:
- 502 Puerta de enlace incorrecta: verifique systemd con
journalctl -u miaplicación, puerto local conss-tlnpy permisos de archivos. - Problema con SSL: Comprobar
renovación de certbot, acceder a la carpeta cert y referenciarla correctamente en Nginx. - Errores de archivo/permiso: Verifique el propietario/grupo correcto para el usuario del servicio.
- Lentitud inesperada: utilice dotnet-counters y profiler para encontrar cuellos de botella en la CPU o en el GC.
Consejos prácticos para la producción (DevOps)
- Utilice compilaciones Docker de varias etapas para reducir el tamaño de la imagen.
- Almacene secretos en un administrador de secretos (Vault, secretos de GitLab CI).
- Escriba puntos finales de salud y configure la actividad/preparación para el orquestador.
- Realice automatización de compilación/prueba/implementación con GitLab CI o GitHub Actions.
Resumen y ofertas de servicios
Alojar ASP.NET Core en Linux es una opción **escalable, segura y extensible** para aplicaciones web y API. Para un alto rendimiento y disponibilidad, se recomienda implementar la aplicación con Kestrel + Nginx o en un contenedor con orquestador, priorizar TLS y el endurecimiento, usar Redis/DB para el estado y una CDN para el contenido estático.
Con más de 85 ubicaciones globales, GPU Cloud, servidores dedicados y de cómputo, VPS comerciales y de juegos, infraestructura anti-DDoS, alojamiento GitLab, CDN y red BGP, nuestra empresa ofrece soluciones de alojamiento y soporte para aplicaciones ASP.NET Core con diferentes planes.









