Apache
Apache
Apache es un software de servidor web de código abierto ampliamente utilizado que sirve archivos HTML a través de Internet. Es altamente personalizable y admite varias funciones.
En Windows la mejor solución es softwaresintegrados como XAMPP o WAMP.
Para su instalación en terminal de Ubuntu simplemente:
sudo apt install apache2
Apache tiene un directorio de carpetas y archivos tal que así:

Dentro de la jerarquía, su archivo principal de configuración es httpd.conf
y en él encontramos parámetros importantes como el puerto de conexión, el host o los virtualhost que queremos configurar
Apache contiene funcionalidades como:
mod_rewrite: Reescriba las URL para mejorar el SEO o la facilidad de uso.
RewriteEngine On
RewriteRule ^blog/([a-zA-Z0-9-]+)$ /index.php?slug=$1 [L]
archivo .htaccess: Permite la configuración por directorio, útil para reescribir URL y otras configuraciones.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule îndex\.html$ / [R=301,L]
</IfModule>
Configuración SSL/TLS: para conexiones HTTPS
<VirtualHost *:443>
ServerName secure.alex.com
SSLEngine On
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/private.key
</VirtualHost>
Autenticación y autorización: protege directorios especificas con contraseñas
<Directory "/var/www/private">
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
Uso de proxys

Equilibrio de carga: Distribuye las solicitudes entrantes entre varios servidores para mejorar el rendimiento.
<Proxy balancer://mycluster>
BalancerMember http://server1:80
BalancerMember http://server2:80
</Proxy>
ProxyPass "/myapp" "balancer://mycluster/myapp"
ProxyPassReverse "/myapp" "balancer://mycluster/myapp"
Parámetros de conexión del servidor
Workers
En el caso de Apache, tenemos tres módulos de procesamiento de múltiples hilos (MPM). Cada uno de estos MPMs tiene un enfoque diferente para manejar las solicitudes HTTP y gestionar los procesos y hilos asociados con la ejecución del servidor:
mpm_prefork
-> Adecuado para entornos donde la estabilidad y la simplicidad son prioritarias sobre la eficiencia en el uso de recursos.mpm_worker
-> Es especialmente útil en entornos donde se espera un alto volumen de solicitudes y se desea aprovechar la eficiencia de los hilos.mpm_events
-> Es una opción adecuada para entornos donde se requiere un alto rendimiento y escalabilidad, especialmente en situaciones donde el número de conexiones simultáneas es alto.
Para saber qué modo está activado por defecto, tendremos que consultar el contenido de la carpeta mods-enabled.
ls -l /etc/apache2/mods-enabled/ | grep mpm
Para activar un modo distinto al habilitado procederemos de la siguiente forma:
a2dismod mpm_event
a2enmod mpm_prefork
service apache2 restart
Se puede modificar el número de workers en el fichero de configuración respectivo de cada módulo.
Puertos
En este caso, con la configuración por defecto deberíamos editar el fichero ports.conf si queremos hacer una configuración general.
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
En el caso en el que tengamos una configuración con VirtualHosts , cada uno puede llevar su propia configuración de puertos.
Timeouts
Referido al período máximo de inactividad permitido entre una solicitud y su correspondiente respuesta.
En Apache además de los parámetros genéricos Timeout y KeepAliveTimeout , podemos hacer uso de los parámetros incluidos en el módulo mod_reqtimeout.
Logs
La configuración de los logs se realiza en el archivo de configuración principal del servidor, que comúnmente se llama httpd.conf
en sistemas basados en Unix/Linux o apache2.conf
en otros casos.
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Configuración de directivas Apache
El contenido del fichero httpd.conf
está compuesto por un gran número de directivas de las que solo se describen a continuación algunas de ellas. Usalas según necesidades:
ServerTokens
Según el parámetro que se introduzca a continuación: - ProductOnly solo muestra el nombre del servidor web instalado - Minimal muestra el nombre así como la versión de Apache instalada - OS muestra el nombre, versión y sistema operativo - Full muestra nombre, versión, sistema operativo así como los servicios que hacen uso del servidor web
ServerTokens full
Apache 2.1/(Linux)/PHP3/MySQL
ServerRoot
Indica al servidor web la ubicación donde se almacenan los ficheros de configuración de Apache.
ServerRoot "/etc/
httpd"
Timeout
Indica el número se segundos antes de que se cancele una conexión por falta de respuesta.
Timeout 120
KeepAlive
Indica si se permiten o no las conexiones persistentes, es decir más de una petición por servidor. Puede tomar los valores "On" u "Off"
KeepAlive On
Listen
Permite asociar Apache a una dirección y/o puerto especifico además del predeterminado.
Listen 192.168.1.1:6680
Include
Indica al servidor web la ruta en donde se encuentran almacenados los ficheros de configuración adicionales de Apache como, por ejemplo, los dominios virtuales.
Include conf.d/*.conf
User
Especifica que usuario es el que ejecuta los procesos del servidor de un y, por tanto, los permisos de lectura y escritura que se aplican sobre los recursos.
User usuario1.
Group
Igual que User pero con grupos
Group group1
ServerAdmin
Especfica la persona a la que se le debe notificar los problemas referentes al portal web, a través de su cuenta de correo.
ServerAdmin administrador@correo.com
ServerName
Especifica el nombre y puerto que se usa para identificar al servidor.
ServerName www.dominio.com:80
DocumentRoot
Indica al servidor al ruta en donde se encentran almacenados los ficheros web del sitio principal.
DocumentRoot "/var/www/html
"
Options
Indica varias opciones de comportamiento, pudiendo estas ser aplicadas a un directorio concreto.
<Directory /web/images/>
Options All
Allow
Indica al sistema los equipos que pueden acceder a una determinada área del servidor. El acceso se puede controlar por nombre, IP, rango de IP, etc. Igualmente pueden ser aplicadas a un directorio concreto. Así mismo, sirve para especificar, entre otras cosas, si se puede ejecutar CGI.
Allow from 150.100.25
5.166
Deny
Analoga a la anterior, pero para denegar el acceso.
Deny from DominioDenegado.com
MariaDB (MySQL)

Referencias: https://openwebinars.net/academia/aprende/servidor-apache/3345/
Última actualización