Servidor web alternativo a Apache2 construido con Python y asyncio para alta concurrencia.
- Servidor asyncio de alta concurrencia (40-300 conexiones simultáneas)
- Virtual hosts con configuración independiente
- Soporte PHP-FPM con múltiples versiones
- Certificados SSL/TLS (Let's Encrypt)
- Modo multi-puerto HTTP para máximo rendimiento
- Soporte proxy reverso (Caddy, Nginx, Cloudflare)
- Logging avanzado con geolocalización
- Dashboard web de administración
- Compresión gzip/brotli
- Seguridad integrada
- Servidor asyncio en puertos personalizables (3080/3453)
- Sistema de configuración (.env + virtual_hosts.yaml)
- Servir archivos estáticos (HTML, CSS, JS, imágenes)
- Detección automática de tipos MIME
- Validación de rutas y seguridad básica
- Configuración por dominio
- Document root independiente por virtual host
- Detección automática por header Host
- Soporte para múltiples dominios
- Cliente FastCGI personalizado
- Soporte para PHP 7.1, 7.4, 8.2, 8.3, 8.4
- Configuración de versión PHP por virtual host
- Parámetros CGI completos
- Manejo de headers HTTP
- Ejecución de archivos PHP
- Logging de accesos (IP, ruta, user-agent, país, timestamp)
- Integración con MongoDB
- Geolocalización con GeoLite2 (detección LOCAL/remota)
- Logs habilitables/deshabilitables desde .env
- Logging dual: memoria + MongoDB persistente
- Índices optimizados para consultas rápidas
- Interfaz web de administración
- Estadísticas en tiempo real (WebSocket)
- Visualización de logs recientes
- Estado de virtual hosts y PHP
- Métricas de rendimiento
- Distribución por países y tipos de request
- Dashboard accesible remotamente (puerto 8000)
- Logs históricos con filtros avanzados
- Paginación inteligente con números de página
- Filtros por fecha, IP, virtual host, status code
- Búsqueda de texto en logs
- Navegación directa por números de página
- Diseño responsive adaptativo
- Certificados SSL auto-firmados
- Soporte HTTPS con SNI (Server Name Indication)
- Configuración SSL por virtual host
- Redirección automática HTTP → HTTPS
- Gestión de certificados SSL
- Integración Let's Encrypt para producción
- Renovación automática de certificados
- Verificación DNS para puertos no estándar
- Compresión gzip/brotli
- Soporte proxy reverso (Caddy, Nginx, Cloudflare)
- Detección de IP real del cliente
- Geolocalización con IPs reales
- Modo multi-puerto HTTP (SSL_ENABLED=false)
- Routing inteligente por (Host, Port)
- Rate limiting
- Headers de seguridad avanzados
- WebSocket support
El servidor web está 100% operativo con todas las funcionalidades principales implementadas:
- 🚀 Servidor Web: Asyncio de alta concurrencia (hasta 300 conexiones)
- 🐘 PHP-FPM: Soporte completo para múltiples versiones (7.1, 7.4, 8.2, 8.3, 8.4)
- 🌐 Virtual Hosts: Configuración independiente por dominio
- 🔐 SSL/HTTPS: Certificados auto-firmados con redirección automática
- 🔄 Proxy Reverso: Compatible con Caddy, Nginx, Cloudflare (IPs reales)
- 📊 Dashboard: Interfaz web con estadísticas y paginación inteligente
- 📝 Logging: Sistema dual (memoria + MongoDB) con geolocalización
- 🗄️ MongoDB: Base de datos persistente con índices optimizados
- 🗜️ Compresión: Gzip/Brotli habilitado
- 🔒 Seguridad: Validación de rutas y headers de seguridad
- SSL/HTTPS Completo: Certificados auto-firmados con redirección automática
- Dashboard Avanzado: Paginación inteligente con números de página
- Logging Inteligente: Detecta geolocalización (LOCAL/remota) y guarda en MongoDB
- Dashboard Remoto: Accesible desde cualquier IP en puerto 8000
- PHP Flexible: Cada virtual host puede usar diferente versión de PHP
- Estadísticas Avanzadas: Distribución por países, tipos de request, códigos de estado
- Filtros Históricos: Búsqueda avanzada en logs con múltiples criterios
- Índices Optimizados: Consultas rápidas en MongoDB para análisis histórico
- 🎯 Paginación Inteligente: Números de página adaptativos con lógica inteligente
- 🔍 Filtros Avanzados: Por fecha, IP, virtual host, status code, método HTTP
- 📱 Responsive Design: Se adapta perfectamente a móviles y tablets
- ⚡ Tiempo Real: WebSocket para estadísticas en vivo
- 📈 Métricas Visuales: Gráficos y estadísticas de rendimiento
- 🌍 Geolocalización: Distribución de requests por países
- Python 3.12+
- PHP-FPM (versiones 7.1, 7.4, 8.2, 8.3, 8.4)
- MongoDB (opcional, para logging)
- Clonar el repositorio
git clone <repository-url>
cd tech-web-server
- Crear entorno virtual
python3 -m venv venv
source venv/bin/activate
- Instalar dependencias
pip install -r requirements.txt
- Configurar permisos PHP-FPM
# Solución permanente (recomendada)
sudo usermod -a -G www-data $USER
# Luego reiniciar sesión o ejecutar:
newgrp www-data
# Alternativa temporal (solo para desarrollo)
sudo chmod 666 /run/php/php*.sock
- Ejecutar el servidor
python main.py
# Servidor
SSL_ENABLED=true # true = SSL tradicional, false = Multi-puerto HTTP
DEFAULT_HTTP_PORT=3080
DEFAULT_HTTPS_PORT=3453
MAX_CONCURRENT_CONNECTIONS=300
# Dashboard
PORT=8000
DASHBOARD_BIND_IP=0.0.0.0
# Logging
LOGS=true
LOG_FILE_PATH=/var/log/webserver/access.log
# Proxy Reverso
PROXY_SUPPORT_ENABLED=true
# MongoDB (para logging persistente)
mongo_host=localhost
mongo_port=27017
mongo_db=tech_web_server
mongo_user=
mongo_pass=
# GeoIP (opcional)
GEOIP_DB_PATH=/var/lib/geoip/GeoLite2-Country.mmdb
# PHP-FPM
PHP_FPM_SOCKETS_71=/run/php/php7.1-fpm.sock
PHP_FPM_SOCKETS_74=/run/php/php7.4-fpm.sock
PHP_FPM_SOCKETS_82=/run/php/php8.2-fpm.sock
PHP_FPM_SOCKETS_83=/run/php/php8.3-fpm.sock
PHP_FPM_SOCKETS_84=/run/php/php8.4-fpm.sock
virtual_hosts:
- domain: "localhost"
port: 3080
document_root: "./public"
ssl_enabled: true
ssl_redirect: true
php_enabled: true
php_version: "8.3"
php_pool: "www"
- domain: "test.local"
port: 3080
document_root: "./public/test"
ssl_enabled: true
ssl_redirect: true
php_enabled: true
php_version: "7.4"
php_pool: "www"
curl http://localhost:3080
curl -H "Host: test.local" http://localhost:3080/version.php
# localhost con PHP 8.3
curl -H "Host: localhost" http://localhost:3080/info.php
# test.local con PHP 7.4
curl -H "Host: test.local" http://localhost:3080/version.php
# Probar redirección HTTP → HTTPS
curl -v -H "Host: localhost" http://localhost:3080/
# Acceso directo HTTPS (certificado auto-firmado)
curl -k -H "Host: localhost" https://localhost:3453/
# Verificar certificado SSL
openssl s_client -connect localhost:3453 -servername localhost
# Acceder al dashboard
curl http://localhost:8000
# Ver estadísticas en tiempo real
curl http://localhost:8000/api/stats
# Ver logs recientes
curl http://localhost:8000/api/logs
# Conectar a MongoDB y ver logs
mongosh
use tech_web_server
db.access_logs.find().limit(5).sort({timestamp: -1})
tech-web-server/
├── src/
│ ├── config/
│ │ ├── __init__.py
│ │ └── config_manager.py # Gestión de configuración
│ ├── server/
│ │ ├── __init__.py
│ │ └── web_server.py # Servidor principal
│ ├── php_fpm/
│ │ ├── __init__.py
│ │ ├── fastcgi_client.py # Cliente FastCGI
│ │ └── php_manager.py # Gestor de PHP-FPM
│ ├── logging/
│ │ ├── __init__.py
│ │ ├── logger.py # Sistema de logging
│ │ └── geoip_manager.py # Geolocalización
│ ├── database/
│ │ ├── __init__.py
│ │ └── mongodb_client.py # Cliente MongoDB
│ ├── dashboard/
│ │ ├── __init__.py
│ │ ├── dashboard_server.py # Servidor dashboard
│ │ └── static/ # Archivos estáticos dashboard
│ ├── tls/
│ │ ├── __init__.py
│ │ └── ssl_manager.py # Gestión de certificados SSL
│ └── utils/ # (próximo)
├── config/
│ └── virtual_hosts.yaml # Configuración virtual hosts
├── ssl/
│ ├── certs/ # Certificados SSL
│ └── generate_certificates.sh # Script generación certificados
├── public/
│ ├── index.html # Página principal
│ ├── info.php # Info PHP localhost
│ └── test/
│ ├── index.html # Página test
│ └── version.php # phpinfo() test
├── .env # Variables de entorno
├── .gitignore # Exclusiones Git
├── requirements.txt # Dependencias Python
├── main.py # Punto de entrada
└── README.md # Este archivo
- SSL/TLS con Let's Encrypt
- Rate limiting y seguridad avanzada
- Optimizaciones de rendimiento
- Métricas avanzadas
0a69190
- Plataforma web completa con dashboard y logging20a8ddc
- Soporte SSL/HTTPS completo con certificados3bbb6bc
- Redirección automática HTTP → HTTPSdc94aa0
- Paginación inteligente del dashboard
- Configuración inicial
- Configuración de virtual hosts
- 🔐 Certificados SSL/Let's Encrypt - Guía completa de SSL
- 🌐 Configuración Multi-Puerto - Modo HTTP de alto rendimiento
- 🔄 Soporte Proxy Reverso - Caddy, Nginx, Cloudflare
- Sistema de logging
- Dashboard de administración
- Instalación como servicio
- Mejores Prácticas del Web Server - Lecciones aprendidas en campo
- Patrones JavaScript Validados - Código probado y optimizado
- Guía de Troubleshooting - Soluciones a problemas comunes
💡 Nota Importante: La documentación de desarrollo está basada en pruebas reales con el sitio Tech-Support, donde se validó que nuestro web server es más estricto que Apache2, lo que resulta en código de mayor calidad y mejores prácticas de desarrollo.
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
[Instrucciones para contribuir]