Configurar Apache en un VPS consiste en instalar el servidor web, crear un VirtualHost por sitio, activar los módulos necesarios y aplicar ajustes básicos de seguridad — todo en menos de una hora desde una terminal SSH.
Apache es el servidor web más usado del mundo y la opción por defecto en la gran mayoría de los stacks LAMP en México. Su flexibilidad para manejar múltiples sitios, su integración con .htaccess y su ecosistema maduro de módulos lo hacen ideal tanto para proyectos pequeños como para aplicaciones de mediana escala.
Paso 1 — Instalar Apache en Ubuntu/Debian
Actualiza los repositorios e instala Apache con un solo comando:
sudo apt update
sudo apt install apache2 -y
Habilita el servicio para que inicie automáticamente con el sistema:
sudo systemctl enable apache2
sudo systemctl start apache2
Verifica que Apache esté corriendo:
sudo systemctl status apache2
Abre un navegador y escribe la IP de tu VPS — deberías ver la página de bienvenida de Apache. Si no la ves, revisa que el puerto 80 esté abierto en el firewall de tu proveedor.
Paso 2 — Configurar VirtualHosts (un dominio por sitio)
Los VirtualHosts permiten que un solo servidor Apache aloje múltiples sitios web con dominios diferentes. Cada sitio tiene su propio archivo de configuración en /etc/apache2/sites-available/.
Crear la estructura de directorios
sudo mkdir -p /var/www/tusitio.com/public_html
sudo chown -R $USER:www-data /var/www/tusitio.com
sudo chmod -R 755 /var/www/tusitio.com
Crear el archivo de configuración del VirtualHost
sudo nano /etc/apache2/sites-available/tusitio.com.conf
Pega el siguiente bloque y ajusta el dominio y la ruta:
<VirtualHost *:80>
ServerName tusitio.com
ServerAlias www.tusitio.com
DocumentRoot /var/www/tusitio.com/public_html
ServerAdmin [email protected]
<Directory /var/www/tusitio.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/tusitio-error.log
CustomLog ${APACHE_LOG_DIR}/tusitio-access.log combined
</VirtualHost>
La opción Options -Indexes es importante: impide que Apache liste el contenido del directorio cuando no existe un archivo index, lo que evita exponer archivos internos accidentalmente.
Activar el sitio y recargar Apache
sudo a2ensite tusitio.com.conf
sudo systemctl reload apache2
Para desactivar el sitio predeterminado que viene con Apache (evita que aparezca cuando se accede por IP):
sudo a2dissite 000-default.conf
sudo systemctl reload apache2
Paso 3 — Módulos esenciales de Apache
Apache funciona mediante módulos que puedes activar o desactivar según tus necesidades. Estos son los más importantes para un VPS de propósito general:
| Módulo | Para qué sirve | Comando de activación |
|---|---|---|
mod_rewrite |
URLs amigables / redirecciones (indispensable para WordPress, Laravel, etc.) | sudo a2enmod rewrite |
mod_ssl |
Soporte HTTPS | sudo a2enmod ssl |
mod_headers |
Cabeceras HTTP de seguridad (HSTS, CSP, X-Frame-Options) | sudo a2enmod headers |
mod_deflate |
Compresión gzip de respuestas | sudo a2enmod deflate |
mod_expires |
Caché de recursos estáticos en el cliente | sudo a2enmod expires |
Activa todos de una vez y recarga:
sudo a2enmod rewrite ssl headers deflate expires
sudo systemctl reload apache2
Para los sitios en la categoría de servidores VPS con PHP, también necesitarás libapache2-mod-php instalado como parte del stack LAMP.
Paso 4 — Ajustes de seguridad básicos
La instalación por defecto de Apache revela información sobre el servidor que un atacante puede aprovechar. Estos ajustes lo endurecen sin afectar el funcionamiento:
Ocultar la versión de Apache y el sistema operativo
sudo nano /etc/apache2/conf-available/security.conf
Busca y cambia estas dos líneas:
ServerTokens Prod
ServerSignature Off
Agregar cabeceras de seguridad
En el archivo de configuración de tu VirtualHost, dentro del bloque <VirtualHost>, agrega:
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Deshabilitar la firma de directorios y el acceso al .htaccess desde la web
Ya cubriste Options -Indexes en el VirtualHost. Adicionalmente, en el archivo de seguridad global, confirma que esté deshabilitado el acceso a archivos .ht*:
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
Esto protege .htaccess y .htpasswd de ser leídos por un navegador.
Para un acompañamiento completo en la configuración y mantenimiento de tu servidor, el equipo de elenlace.com puede gestionar toda la infraestructura de tu VPS en México.
Conclusiones clave
- Apache se instala en dos comandos en Ubuntu/Debian; el resto es configuración.
- Un VirtualHost por dominio es la práctica estándar: mantiene los sitios aislados y organizados.
Options -IndexesyAllowOverride Allson las dos directivas más críticas en la configuración de directorio.- Los módulos
rewrite,ssl,headers,deflateyexpirescubren el 90 % de los casos de uso típicos. - Ocultar
ServerTokensy agregar cabeceras de seguridad son los primeros pasos de hardening que no deben omitirse.
¿Quieres un servidor Apache listo para producción sin preocuparte por la configuración? Contáctanos en elenlace.com — configuramos y aseguramos tu VPS para que tú te concentres en tu negocio.
Preguntas frecuentes
¿Cómo verifico que la configuración de Apache no tiene errores antes de recargar?
Usa el comando sudo apachectl configtest o sudo apache2ctl -t. Si la sintaxis es correcta, responde Syntax OK. Si hay un error, indica el archivo y la línea exacta. Siempre corre este comando antes de hacer systemctl reload apache2.
¿Cuál es la diferencia entre systemctl reload y systemctl restart en Apache?
reload recarga la configuración sin interrumpir las conexiones activas — es lo que debes usar en producción. restart detiene y vuelve a arrancar el proceso completo, lo que corta brevemente las conexiones existentes. Solo usa restart cuando instalas un módulo nuevo que requiere reinicio completo.
¿Puedo alojar varios dominios en un mismo VPS con Apache?
Sí, ese es exactamente el propósito de los VirtualHosts. No hay un límite técnico estricto; el límite real lo imponen los recursos del servidor (RAM, CPU). En un VPS de 2 GB de RAM con sitios de tráfico moderado, es común alojar entre 5 y 15 dominios sin problemas.
¿Qué diferencia hay entre a2ensite y editar directamente apache2.conf?
a2ensite simplemente crea un enlace simbólico desde sites-available/ hacia sites-enabled/, que es lo que Apache realmente lee al iniciarse. Es la forma estándar en sistemas Debian/Ubuntu porque mantiene los archivos organizados y hace que activar/desactivar sitios sea reversible con un solo comando.
Para saber más
Otros proveedores y guías que vale la pena comparar: