Httpd.conf Parte 1

Directrices de configuración en httpd.conf

El archivo de configuración del Servidor Apache HTTP es /etc/httpd/conf/httpd.conf. El archivo httpd.conf está bien comentado y es bastante auto-explicativo. Su configuración por defecto funciona para la mayoría de los casos; sin embargo, es una buena idea familiarizarse con algunas de las opciones de configuración más importantes.

Con la versión 2.0 del Servidor Apache HTTP, han cambiado muchas opciones de configuración. Si necesita migrar de la versión 1.3 al nuevo formato.

Sugerencias de configuración generales

Si necesita configurar Servidor Apache HTTP sólo tiene que modificar el archivo /etc/httpd/conf/httpd.conf y después recargar o bien apagar y arrancar el proceso del comando httpd como se describe en Sección 10.4.

Antes de modificar el archivo httpd.conf, primero haga una copia del archivo original. Al crear una copia de respaldo se hace más fácil recuperarse de posibles errores cometidos mientras se editaba el archivo de configuración.

Si comete un error y su servidor de web no funciona correctamente, lo primero que debe realizar es revisar lo que lo que acaba de modificar en httpd.conf para ver si no hay errores de transcripción.

Después consulte el archivo de registro de errores del servidor web, /var/log/httpd/error_log. Este puede ser difícil de interpretar, todo depende del nivel de experiencia. Sin embargo, las últimas entradas en el registro deberían de ayudarle a saber lo que ha pasado.

Las siguientes subsecciones proporcionan una breve descripción de muchas directrices incluidas en el archivo httpd.conf. Estas descripciones no son completas. Para más información, consulte la documentación de Apache en http://httpd.apache.org/docs-2.0/.

Para más información sobre las directrices mod_ssl, revisa ESTA DOCUMENTACIÓN

ServerRoot

La directriz ServerRoot especifica el directorio de nivel superior que tiene el contenido web.
Por defecto, ServerRoot está configurado a /etc/httpd para servidores seguros y no seguros.

PidFile

PidFile nombra el archivo en el que el servidor graba su ID de proceso (pid).
Por defecto, el PID es listado en /var/run/httpd.pid.

Timeout

Timeout define, en segundos, el tiempo que el servidor esperará por recibir y transmitir durante la comunicación. Timeout está configurado por defecto a 300 segundos, lo cual es apropiado para la mayoría de las situaciones.

KeepAlive

KeepAlive determina si el servidor permitirá más de una petición por conexión y se puede usar para prevenir a un cliente consumir demasiados recursos del servidor.

Por defecto Keepalive está configurado a off. Si Keepalive está en on y el servidor se vuelve muy ocupado, este puede rápidamente generar el máximo número de procesos hijos.
En esta situación, el servidor se volverá significativamente lento. Si se activa Keepalive, es una buena idea configurar el KeepAliveTimeout a un valor bajo

(consulta la directriz KeepAliveTimeout para más información sobre )

y controle el archivo de registro /var/log/httpd/error_log en el servidor. Este registro informa cuando el servidor se esta quedando corto de procesos hijos.

MaxKeepAliveRequests

Esta directriz establece el número máximo de peticiones permitidas por cada conexión persistente. El Proyecto Apache recomienda un valor alto, lo que mejoraría el rendimiento del servidor. El valor predeterminado de MaxKeepAliveRequests es de 100 que debería bastar en la mayoría de los casos.

KeepAliveTimeout

La directriz KeepAliveTimeout establece el número de segundos que el servidor esperará tras haber dado servicio a una petición, antes de cerrar la conexión. Una vez que el servidor recibe una petición, se aplica la directriz Timeout en su lugar. KeepAliveTimeout está configurado a 15 segundos por defecto.

IfModule

Las etiquetas <IfModule> y </IfModule> crean un contenedor condicional que sólo es activado si el módulo especificado es cargado.
Las directrices contenidas entre etiquetas IfModule son procesadas bajo una de dos condiciones.
Las directrices son procesadas si se carga el módulo entre la etiqueta de comienzo <IfModule>. O, si un símbolo de exclamación [!] aparece antes del nombre del módulo, entonces las directrices son procesadas sólo si el módulo especificado en la etiqueta <IfModule> no es cargado.

Directrices MPM específicas al pool de servidores

Como se explicó en la Sección 10.2.1.2, bajo el Servidor Apache HTTP 2.0 la responsabilidad por el manejo de las características del pool de servidores recae sobre un grupo de módulos llamado MPMs. Las características del pool de servidores difieren dependiendo de cual MPM es utilizado. Por esta razón, es necesario un contenedor IfModule para definir el pool de servidores del MPM en uso.

Por defecto, Servidor Apache HTTP 2.0 define el pool de servidores para ambos MPMs: prefork y worker.
La sección siguiente lista las directrices encontradas dentro de los contenedores del pool de servidores específicos al MPM.

StartServers

La directriz StartServers establece cuántos procesos de servidor serán creados al arrancar. Ya que el servidor Web crea y elimina dinámicamente procesos de servidor según el tráfico, no se necesitará cambiar este parámetro. El servidor web está configurado para arrancar 8 procesos del servidor al arrancar para el MPM prefork y 2 para el MPM worker.

MaxRequestsPerChild

MaxRequestsPerChild establece el número máximo de peticiones que cada proceso de servidor hijo procesa antes de morir. La principal razón para configurar MaxRequestsPerChild es evitar que procesos de larga vida gasten memoria. El valor predeterminado de MaxRequestsPerChild para el MPM prefork es de 4000 y, para el MPM worker, es 0.

MaxClients

La directriz MaxClients establece un límite al total de los procesos del servidor o clientes conectados simultáneamente, que se pueden ejecutar a la vez. El propósito principal de esta directriz es prevenir que un Servidor Apache HTTP descontrolado vuelva inestable al sistema operativo. Para los servidores muy ocupados este valor se debería colocar a un valor alto. El valor por defecto es 150, sin importar el MPM que se utilice. Sin embargo, no se recomienda que el valor del comando MaxClients supere 256 cuando se utilice el MPM prefork.

MinSpareServers y MaxSpareServers

Estos valores solamente son utilizados con el MPM prefork. Ellos ajustan como el Servidor Apache HTTP se adapta dinámicamente a la carga percibida manteniendo un número apropiado de procesos de servidores extra o de repuesto basado en el número de peticiones entrantes. El servidor comprueba el número de servidores que esperan peticiones y elimina algunos si el número es más alto que MaxSpareServers o crea algunos si el número de servidores es menor que MinSpareServers.

El valor predeterminado de MinSpareServers es 5 y el de MaxSpareServers es 20. Estos valores predeterminados son suficientes en la mayoría de los casos. Tenga cuidado de no incrementar el número de MinSpareServers a un número muy elevado ya que creará una gran carga de procesamiento, incluso cuando el tráfico fuese bajo.

MinSpareThreads y MaxSpareThreads

Estos valores solamente son utilizado con el MPM worker. Ellos ajustan como el Servidor Apache HTTP se adapta dinámicamente a la carga percibida manteniendo un número apropiado de hilos de servidores extra basado en el número de peticiones entrantes. El servidor comprueba el número de hilos de servidores que esperan peticiones y elimina algunos si el número es más alto que MaxSpareThreads o crea algunos si el número de servidores es menor que MinSpareThreads.

El valor predeterminado de MinSpareThreads es 25 y el de MaxSpareThreads es 75. Estos valores predeterminados son apropiados en la mayoría de los casos. El valor para MaxSpareThreads debe ser mayor o igual que la suma de MinSpareThreads y ThreadsPerChild, de lo contrario el Servidor Apache HTTP lo corregirá automáticamente.

ThreadsPerChild

Este valor solamente es utilizado con el MPM worker. Configura el número de hilos dentro de cada proceso hijo. El valor por defecto para esta directriz es 25.

Listen

El comando Listen identifica los puertos en los que el servidor Web aceptará las peticiones entrantes. Por defecto, el Servidor Apache HTTP está configurado para escuchar en el puerto 80 para comunicaciones Web no seguras y (en el archivo /etc/httpd/conf.d/ssl.conf el cual define cualquier servidor seguro) en el puerto 443 para comunicaciones seguras.

Si el Servidor Apache HTTP está configurado para escuchar en un puerto por debajo del 1024, se necesita al usuario root para iniciarlo. Para los puertos 1024 y superiores, httpd puede ser arrancado por cualquier usuario.

La directriz Listen también se puede usar para especificar direcciones IP particulares sobre las cuales el servidor aceptará conexiones.

Include

Include permite que se incluyan otros archivos de configuración en el tiempo de ejecución.

La ruta a estos archivos de configuración pueden ser absolutas o relativas con respecto al ServerRoot.

Para que el servidor use módulos de paquetes individuales, como mod_ssl, mod_perl y php, tiene que estar la siguiente directriz en Section 1: Global Environment del httpd.conf:

Include conf.d/*.conf

LoadModule

LoadModule es usada para cargar módulos Dynamic Shared Object (DSO). Se puede encontrar más información sobre el soporte del Servidor Apache HTTP para DSO, incluyendo exáctamente cómo utilizar la directriz LoadModule, en la Sección 10.7. Observe que ya no es importante el orden en que se cargan estos módulos con el Servidor Apache HTTP 2.0.

ExtendedStatus

La directriz ExtendedStatus controla si Apache generará información básica del estado del servidor (off) o detallada (on), cuando se invoca el manejador server-status usando etiquetas Location.

IfDefine

Las etiquetas IfDefine envuelven directrices de configuración que son aplicadas si el “test” establecido en la etiqueta <IfDefine> es verdadero. Las directrices no se tienen en cuenta si el test es falso.

El test en las etiquetas IfDefine es un nombre de parámetro (por ejemplo, HAVE_PERL). Si el parámetro está definido, es decir, si se da como argumento al comando de arranque del servidor, entonces el test es verdadero. En este caso, cuando se arranca el servidor Web, el test es verdadero y se aplican las directrices contenidas en las etiquetas IfDefine.

SuexecUserGroup

La directriz SuexecUserGroup, que se origina desde el módulo mod_suexec, permite especificar privilegios de ejecución de usuario y grupo para programas CGI. Las solicitudes no CGI también son procesadas con el usuario y el grupo especificado en las directrices User y Group.

server

User

La directriz User establece el nombre de usuario para el proceso del servidor y determina qué archivos pueden acceder al servidor. Cualquier archivo que no esté accesible a este usuario tampoco estará disponible para los clientes conectándose al Servidor Apache HTTP.

Por defecto User es configurado a apache.

Esta directriz se ha desaprobado para la configuración de hosts virtuales.

apache

Group

Especifica el nombre del grupo de los procesos Servidor Apache HTTP.

Esta directriz se ha desaprobado para la configuración de hosts virtuales.

Por defecto, Group está configurado a apache.

ServerAdmin

Configure la directriz ServerAdmin a la dirección de correo electrónico del administrador del servidor Web. Esta dirección de correo aparecerá en los mensajes de error en las páginas generadas por el servidor Web, de tal manera que los usuarios pueden comunicar errores enviando correo al administrador.

Por defecto, ServerAdmin es configurado a root@localhost.

Una forma típica de configurar ServerAdmin es configurarlo en a webmaster@ejemplo.com. Una vez configurado, cree un alias del webmaster para la persona responsable del servidor Web en /etc/aliases y ejecute /usr/bin/newaliases.

ServerName

Use la directriz ServerName para configurar un nombre de servidor y un número de puerto (que coincida con la directriz Listen) para el servidor. El ServerName no necesita coincidir con el nombre real de la máquina. Por ejemplo, el servidor Web puede ser www.example.com pero el nombre del servidor es en realidad foo.example.com. El valor especificado en ServerName debe ser un nombre del Servicio de Nombres de Dominio (Domain Name Service, DNS)válido que pueda ser resuelto por el sistema — no invente algo.

Lo siguiente es una directriz ServerName de ejemplo:

ServerName www.example.com:80

Cuando especifique un ServerName, asegúrese de que el par de la dirección IP y el nombre del servidor esten incluidos en el archivo /etc/hosts.

UseCanonicalName

Cuando se configure esta directriz a on, se está indicando al Servidor Apache HTTP a que se referencie asímismo usando el valor especificado en las directrices ServerName y Port. Cuando UseCanonicalName es configurada a off, el servidor usará el valor usado por el cliente solicitante cuando se refiera a el.

UseCanonicalName está configurada a off por defecto.

DocumentRoot

DocumentRoot es el directorio que contiene la mayoría de los archivos HTML que se entregarán en respuesta a peticiones. El directorio predeterminado DocumentRoot para servidores web seguros y no seguros es /var/www/html. Por ejemplo, el servidor puede recibir una petición para el siguiente documento:

http://example.com/foo.html

El servidor busca por el archivo siguiente en el directorio por defecto:

/var/www/html/foo.html

Si se quiere cambiar DocumentRoot para que no lo compartan los servidores web seguros y no seguros

Directory

Las etiquetas <Directory /path/to/directory> y </Directory> se usan para crear un contenedor que se utiliza para cercar un grupo de directrices de configuración que sólo se aplican a un directorio y sus subdirectorios específicos. Cualquier directriz aplicable a un directorio puede usarse en las etiquetas Directory.

Por defecto, se aplican parámetros muy restrictivos al directorio raíz (/), utilizando las directrices Options y AllowOverride (vea la Sección 10.5.24). Con esta configuración, cualquier directorio del sistema que necesite valores más permisivos ha de ser configurado explícitamente con esos valores.

En la configuración por defecto, otro contenedor Directory es configurado para el DocumentRoot el cual asigna parámetros menos rígidos al árbol del directorio para que el Servidor Apache HTTP pueda acceder a los archivos que residan allí.

El contenedor Directory también se puede usar para configurar directorios adicionales cgi-bin para las aplicaciones del servidor fuera del directorio especificado en la directriz ScriptAlias

Para lograr esto, el contenedor Directory debe configurar la opción ExecCGI para ese directorio.

Por ejemplo, si los scripts CGI están localizados en /home/my_cgi_directory, añada el contenedor siguiente Directory al archivo httpd.conf:

<Directory /home/my_cgi_directory>
Options +ExecCGI
</Directory>

Luego, necesitará anular el comentario de la directriz AddHandler para identificar archivos con la extensión .cgi como scripts CGI.

Para que esto funcione, los permisos para los scripts CGI y la ruta completa a los scripts, se deben colocar a 0755.

Options

La directriz Options controla cuáles características del servidor están disponibles en un directorio en particular. Por ejemplo, en los parámetros restrictivos especificados para el directorio raíz, Options sólo permite FollowSymLinks. No hay características activadas, salvo que el servidor puede seguir enlaces simbólicos en el directorio raíz.

Por defecto, en el directorio DocumentRoot, Options se configura para incluir Indexes y FollowSymLinks. Indexes permite al servidor generar un listado de un directorio si no se especifica el DirectoryIndex (por ejemplo, index.html). FollowSymLinks permite al servidor seguir enlaces simbólicos en ese directorio.

conf

AllowOverride

La directriz AllowOverride indica si puede o no ignorar cualquiera de las Options por las declaraciones en un archivo .htaccess. Por defecto, tanto el directorio raíz como DocumentRoot están configurados para no se permita ignorar .htaccess.

Order

La directriz Order controla el orden en el cual las directrices allow y deny son evaluadas. El servidor es configurado para evaluar las directrices Allow antes de las directrices Deny para el directorio DocumentRoot.

Allow

Allow especifica cual cliente puede acceder a un directorio dado. El solicitante puede ser all, un nombre de dominio, una dirección IP, una dirección IP parcial, un par de red/máscara de la red, etc. El directorio DocumentRoot está configurado para permitir (Allow) peticiones desde todos (all), es decir, que todos tienen acceso.

Deny

Deny funciona igual que Allow, excepto que especifica a quién se le niega el acceso. DocumentRoot no es configurado para negar (Deny) peticiones a ninguno por defecto.
 

Leave a Comment