
Httpd.conf Parte 2
Continuamos con esta segunda parte sobre httpd.conf a fondo.
UserDir
UserDir es el nombre del subdirectorio dentro del directorio principal de cada usuario dónde estarán los archivos HTML personal que serán servidos por el servidor de Web. Esta directriz esta configurada por defecto a disable.
El nombre para el subdirectorio esta configurado a public_html en la configuración por defecto. Por ejemplo, el servidor puede recibir la siguiente petición:
http://example.com/~username/foo.html
El servidor buscará por el archivo:
/home/username/public_html/foo.html
En el ejemplo de arriba, /home/username/ es el directorio principal del usuario (observe que la ruta por defecto al directorio principal del usuario puede variar).
Hay que asegurarse que los permisos de los directorios principales de usuario esten configurados correctamente. El valor de los permisos deben ser de 0711. Los bits de lectura (r) y ejecución (x) deben estar activados en el directorio del usuario public_html (0755 también funcionará). Los archivos servidos en un directorio principal de usuario public_html debe estar configurados, por lo menos, a 0644.
DirectoryIndex
DirectoryIndex es la página por defecto que entrega el servidor cuando hay una petición de índice de un directorio especificado con una barra (/) al final del nombre del directorio.
Cuando un usuario pide la página http://ejemplo/este_directorio/, recibe la página del índice del directorio, DirectoryIndex, si existe, o un listado de directorios generado por el servidor. El valor por defecto para DirectoryIndex es index.html y el tipo de mapa index.html.var. El servidor intentará encontrar cualquiera de estos archivos y entregará el primero que encuentre. Si no encuentra ninguno de estos archivos y Options Indexes esta configurado para ese directorio, el servidor genera y devuelve una lista, en formato HTML, de los subdirectorios y archivos dentro del directorio, a menos que la característica de listar directorios esté desactivada.
AccessFileName
AccessFileName denomina el archivo que el servidor utilizará para información de control de acceso en cada directorio. Por defecto, el servidor utilizará .htaccess.
Justo tras AccessFileName, un conjunto de indicadores de Files aplican el control de acceso a cualquier archivo comenzando con un .ht. Estas directrices niegan el acceso Web a cualquier archivo .htaccess (o otros archivos que comiencen con .ht) por razones de seguridad.
CacheNegotiatedDocs
Por defecto, el servidor Web requiere a los servidores proxy que no hagan caché de los documentos que se negocian en base al contenido (pueden cambiar en el tiempo o según la entrada de quien los solicita). Si se configura CacheNegotiatedDocs a on, se desactiva la función y se permite acceso a los servidores proxy a tales documentos caché.
TypesConfig
TypesConfig nombra el archivo que configura la lista por defecto de asignaciones tipo MIME (extensiones de nombres de archivo a tipos de contenido). El archivo predeterminado TypesConfig es /etc/mime.types. En vez de modificar el /etc/mime.types, la forma recomendada de añadir asignaciones de tipo MIME es usando la directriz AddType.
DefaultType
DefaultType establece el tipo de contenido por defecto que el servidor utilizará para documentos cuyos tipos MIME no puedan ser determinados. Por defecto es text/plain.
HostnameLookups
HostnameLookups se puede configurar a on, off o double. Si se configura HostnameLookups a on, el servidor automáticamente resuelve las direcciones IP para cada conexión. Resolver las direcciones IP significa que el servidor hace una o más conexiones a un servidor DNS, añadiendo sobrecarga por procesamiento. Si HostnameLookups es configurado a double, el servidor realiza búsquedas inversa doble del DNS, añadiendo aún más sobrecarga.
Para ahorrar recursos en el servidor, HostnameLookups es configurado a off por defecto.
Si se requieren nombres de host en los archivos de registro, considere ejecutar una de los muchas herramientas de análisis de log que llevan a cabo las búsquedas de DNS de forma mucho más eficiente y por montones cuando se este rotando los archivos de log del servidor Web.
ErrorLog
ErrorLog especifica el archivo donde se guardan los errores del servidor . Por defecto, esta directriz es configurada a /var/log/httpd/error_log.
LogLevel
LogLevel establece la cantidad de detalles que tendrán los registros de mensajes de error. LogLevel se puede configurar (desde el que tiene menos detalles a los más detallados) a emerg, alert, crit, error, warn, notice, info o debug. El valor predeterminado de LogLevel es warn.
LogFormat
La directriz LogFormat configura el formato para los archivos de registro del servidor Web. El comando LogFormat usado en realidad depende de la configuración dada en la directriz CustomLog
Las siguientes son las opciones de formato si la directriz CustomLog es configurada a combined:
%h (dirección IP del host remoto o nombre de la máquina)
Lista la dirección IP de la máquina remota del cliente solicitante. Si HostnameLookups es configurada a on, el nombre de máquina del cliente es registrado a menos que no este disponible desde el DNS.
%l (rfc931)
No se usa. Un guión [-] aparece en el campo de registro para este campo.
%u (usuario autenticado)
Si se requiere autenticación, lista el nombre del usuario registrado. Usualmente, esto no se utiliza, por tanto aparece un guión [-] en el archivo de registro para este campo.
%t (fecha)
Lista la fecha y hora de la solicitud.
%r (cadena de la solicitud)
Lista la cadena de la solicitud exactamente como viene del navegador o cliente.
%s (estado)
Lista el estado de código HTTP el cual fue devuelto al host cliente.
%b (bytes)
Lista el tamaño del documento.
%”%{Referer}i” (referencia)
Lista la dirección URL de la página web que refiere el máquina cliente al servidor Web.
%”%{User-Agent}i” (agente usuario)
Lista el tipo de navegador Web que está realizando la solicitud.
CustomLog
CustomLog identifica el archivo de registro y su formato. Por defecto, el registro es guardado al archivo /var/log/httpd/access_log.
El formato por defecto CustomLog es combined, como se ilustra a aquí:
remotehost rfc931 user date “request” status bytes referrer user-agent
ServerSignature
La directriz ServerSignature añade una línea que contiene la versión del Servidor Apache HTTP y el ServerName para cualquier documento generado por el servidor, tales como mensajes de error devueltos a los clientes. Por defecto ServerSignature está configurada a on.
También se puede configurar a off o a EMail. EMail, agrega una etiqueta HTML mailto:ServerAdmin a la línea de la firma de las respuestas auto-generadas.
Alias
El valor Alias hace accesibles a los directorios fuera del directorio DocumentRoot. Cualquier URL que termine en el alias será automáticamente traducido a la ruta del alias. Por defecto, ya existe un alias configurado para un directorio icons. El servidor web puede acceder al directorio icons, pero el directorio no está en el DocumentRoot.
ScriptAlias
La directriz ScriptAlias define donde pueden encontrarse los scripts CGI. Normalmente, no es una buena idea colocar los scripts CGI dentro de DocumentRoot, donde podrían, potencialmente, ser visualizados como documentos de texto. Por esta razón, la directriz ScriptAlias diseña un directorio especial fuera del directorio DocumentRoot para contener ejecutables del servidor y scripts. Este directorio es conocido como un cgi-bin y se configura por defecto a /var/www/cgi-bin/.
Es posible establecer directorios para almacenar ejecutables fuera del directorio cgi-bin.
Redirect
Cuando se mueve una página web, se puede utilizar Redirect para crear asignaciones de la ubicación del archivo a un nuevo URL. El formato es como sigue:
Redirect /<old-path>/<file-name> http://<current-domain>/<current-path>/<file-name>
En este ejemplo, sustituye <old-path> con la vieja información de la ruta por <file-name> y <current-domain> y <current-path> con el dominio actual y la información de la ruta para <file-name>.
En este ejemplo, cualquier petición <file-name> en la vieja ubicación será redirigida automáticamente a la nueva ubicación.
Para técnicas más avanzadas de redireccionamiento, use el módulo mod_rewrite incluido con el Servidor Apache HTTP. Para más información sobre la configuración del módulo mod_rewrite, refiérase a la documentación de la Apache Software Foundation en http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html.
IndexOptions
IndexOptions controla la apariencia de los listados generados por el servidor, al añadir iconos, texto descriptivo, etc. Si Options Indexes está configurado (vea la Sección 10.5.23), el servidor Web server genera un listado de directorio cuando el servidor Web recibe una petición HTTP para un directorio sin un índice.
Primero el servidor Web busca en el directorio solicitado un archivo que coincida los nombres listados en la directriz DirectoryIndex (usualmente, index.html). Si el servidor no encuentra un archivo index.html, el Servidor Apache HTTP genera un listado del directorio en HTML. La apariencia del listado de este directorio es controlada, en parte, por la directriz IndexOptions.
La configuración predeterminada activa FancyIndexing. Esto significa que un usuario puede reordenar un listado de directorio haciendo clic en las cabeceras de columnas. Otro clic en la misma cabecera cambiará del orden ascendente al descendente. FancyIndexing también muestra iconos diferentes para diferentes archivos, basados en las extensiones de archivos.
La opción AddDescription, cuando se utiliza junto con FancyIndexing, presenta una descripción corta para el archivo en los listados de directorios generados por el servidor.
IndexOptions tiene otros parámetros que pueden activarse para controlar la apariencia de los listados generados por los servidores. Los parámetros IconHeight y IconWidth requieren que el servidor incluya etiquetas HTML HEIGHT y WIDTH para los iconos en las páginas generadas por el servidor. El parámetro IconsAreLinks combina el icono con el ancla HTML, la cual contiene el enlace URL objetivo.
AddIconByEncoding
Esta directriz denomina qué iconos se mostrarán con los archivos según su codificación MIME, en los listados de directorio. Por ejemplo, el servidor muestra por defecto el icono compressed.gif junto a archivos con codificación MIME x-compress y x-gzip en los listados de directorio.
AddIconByType
Esta directriz denomina qué iconos se mostrarán con los archivos con codificación MIME, en los listados del directorio. Por ejemplo, por defecto, el servidor muestra el icono text.gif junto a archivos con tipo MIME text en los listados del directorio.
AddIcon
AddIcon dice al servidor qué icono mostrar en los listados del directorio para ciertos tipos de archivos según la extensión. Por ejemplo, el servidor Web muestra el icono binary.gif para archivos con extensiones .bin o .exe.
DefaultIcon
DefaultIcon especifica el icono desplegado en el listado generado por el servidor para archivos que no tienen otro icono especificado. El archivo de imagen por defecto es unknown.gif.
AddDescription
Cuando utilice FancyIndexing como un parámetro de IndexOptions, la directriz AddDescription se puede usar para mostrar descripciones especificadas por el usuario para ciertos archivos o tipos de archivo en un listado de directorio generado por el servidor. La directriz AddDescription soporta el listado de archivos específicos, expresiones con comodines o extensiones de archivos.
ReadmeName
La directriz ReadmeName determina el archivo (si existe dentro del directorio) que se adjuntará a los listados de los directorios. El servidor Web intentará primero incluirlo como documento HTML y luego como texto plano. El valor predeterminado de ReadmeName es README.html.
HeaderName
La directriz HeaderName dicta el archivo (si existe dentro del directorio) que se antepondrá al comienzo de los listados de los directorios. Al igual que con ReadmeName, el servidor intentará incluirlo como documento HTML si es posible, o en caso contrario, como texto.
IndexIgnore
IndexIgnore lista las extensiones de archivo, los nombres de los archivos parciales, las expresiones con comodines o los nombres completos. El servidor Web no incluirá ningún archivo que coincida con estos patrones en los listados de directorios.
AddEncoding
La directriz AddEncoding nombra las extensiones de archivos que deberían especificar un tipo particular de codificación. También se puede usar AddEncoding para decirle a los navegadores que descompriman ciertos archivos mientras los descargan.
AddLanguage
La directriz AddLanguage asocia extensiones a contenidos específicos de idiomas. Esta directriz es útil para la negociación de contenidos, cuando el Servidor Apache HTTP devuelve contenidos en diferentes idiomas dependiendo de la configuración del idioma del navegador Web.
LanguagePriority
La directriz LanguagePriority permite dar la prioridad para diferentes idiomas en caso de que el navegador Web no especique la preferencia de idioma.
AddType
Utilice la directriz AddType para definir o suprimir por defectopares tipo MIME y extensiones de archivos. La siguiente directriz de ejemplo le dice al Servidor Apache HTTP que reconozca la extensión de archivos .tgz.
AddType application/x-tar .tgz
AddHandler
La directriz AddHandler hace corresponder extensiones de archivos a manejadores específicos. Por ejemplo, se puede corresponder el manejador cgi-script con la extensión .cgi para que automáticamente trate a cualquier archivo con un nombre que termine en .cgi como un script CGI. A continuación se presenta un ejemplo de una directriz AddHandler para la extensión .cgi.
AddHandler cgi-script .cgi
Esta directriz habilita a CGIs fuera del cgi-bin a que funcionen en cualquier directorio en el servidor que tengan la opción ExecCGI dentro del contenedor de directorios. Refiérase a la Sección 10.5.22 para más información sobre la configuración de la opción ExecCGI para un directorio.
Además de los scripts CGI, la directriz AddHandler es usada para procesar archivos de mapas de imagen y HTML analizados por el servidor.
Action
Action especifica parejas tipo contenido MIME y script CGI, para que cuando un archivo de ese tipo de media sea solicitado, se ejecute un script CGI particular.
ErrorDocument
La directriz ErrorDocument asocia un código de respuesta HTTP con un mensaje o un URL para que sea devuelto al cliente. Por defecto, el servidor Web produce una salida simple de mensaje de error cuando ocurre alguno.
La directriz ErrorDocument obliga a que el servidor Web envie una salida de mensaje personalizado o página.
BrowserMatch
La directriz BrowserMatch permite al servidor definir variables de entorno y/o tomar acciones según sea el campo de cabecera User-Agent del HTTP, que identifica el tipo de navegador Web del cliente. Por defecto, el servidor usa BrowserMatch para denegar la conexión a navegadores con problemas conocidos y para desactivar “keepalives” y vaciados de cabecera de HTTP para navegadores que se sabe tienen problemas con acciones de ese tipo.
Location
Las etiquetas <Location> y </Location> permiten crear un contenedor en el cual se puede especificar el control de acceso basado en URL.
Por ejemplo, para permitir a personas conectarse desde dentro del dominio del servidor para ver informes de estado, utilice las directrices siguientes:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from <.example.com>
</Location>
Reemplace <.example.com> con el nombre de dominio de segundo nivel para el servidor Web.
Para proporcionar informes de configuración del servidor (incluyendo los módulos instalados y las directrices de configuración) a peticiones desde dentro del dominio, utilice las siguientes directrices:
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from <.example.com>
</Location>
Una vez más, reemplace <.example.com> con el nombre del dominio de segundo nivel para el servidor Web.
ProxyRequests
Para configurar el Servidor Apache HTTP para que funcione como un servidor proxy, elimine las marcas de almohadillas o numeral (#) del comienzo de la línea <IfModule mod_proxy.c>, las ProxyRequests y cada línea en la estrofa <Proxy>. Configure la directriz ProxyRequests a On, y configure cuáles dominios tienen acceso al servidor en la directriz Allow from de la estrofa <Proxy>.
Proxy
Las etiquetas <Proxy *> y </Proxy> crean un contenedor el cual envuelve un grupo de directrices de configuración solamente para aplicar al servidor proxy. Muchas directrices las cuales son permitidas dentro del contenedor <Directory> pueden también ser usadas dentro del contenedor <Proxy>.
Directrices Cache
Hay varias directrices de caché en comentarios son suministradas por el archivo de configuración predeterminado del Servidor Apache HTTP. En la mayoría de los casos, al quitar el comentario de estas líneas mediante la eliminación de las almohadillas (#) del principio de la línea es suficiente. Lo siguiente, sin embargo, es una lista de algunas de las directrices relacionadas a caché más importantes.
CacheEnable — Especifica si la caché es un disco, memoria o caché de archivo descriptivo. Por defecto CacheEnable configura un disco caché para las URLs en o por debajo de /.
CacheRoot — pone el nombre del directorio que contiene archivos de caché. El valor predeterminado de CacheRoot es el directorio /var/httpd/proxy/.
CacheSize — establece cuánto espacio puede usar el caché, en KB. El valor predeterminado de CacheSize es 5 KB.
Lo siguiente es una lista de algunas directrices comunes relacionadas con caché.
CacheMaxExpire — Especifica cuanto tiempo se conservan los documentos HTML (sin una recarga desde el servidor Web original) en el caché. El valor por defecto es 24 horas (86400 segundos).
CacheLastModifiedFactor — Especifica la creación de una fecha de vencimiento para documentos que no venían con caducidad desde el servidor de origen. El valor predeterminado de CacheLastModifiedFactor está configurado a 0.1, es decir que la fecha de vencimiento para tales documentos es igual a un décimo de la cantidad de tiempo desde la última vez que se modificó el documento.
CacheDefaultExpire — Especifica el tiempo de caducidad en horas para un documento que fue recibido usando un protocolo que no soporta fechas de vencimiento. El valor por defecto es configurado a 1 hora (3600 segundos).
NoProxy — Especifica una lista separada por espacios de subredes, direcciones IP, dominios o hosts cuyos contenidos no están en caché. Este valor es de gran utilidad para sitios de Intranet.
NameVirtualHost
La directriz NameVirtualHost asocia una dirección IP y número de puerto, si es necesario, para cualquier máquina virtual basada en nombres. El hospedaje virtual basado en nombres permite a un Servidor Apache HTTP servir a dominios diferentes sin usar múltiples direcciones IP.
Para habilitar el hospedaje basado en nombres, quite los comentarios de la directriz de configuración NameVirtualHost y añada la dirección IP correcta. Luego añada más contenedores VirtualHost para cada host virtual como sea necesario para su configuración.
VirtualHost
Las etiquetas <VirtualHost> y </VirtualHost> crean un contenedor mostrando las características de un host virtual. El contenedor VirtualHost acepta la mayoría de las directrices de configuración.
Se proporciona un contenedor VirtualHost en comentarios en httpd.conf, el cual ilustra el mínimo conjunto de directrices de configuración necesarias para cada host virtual. Refiérase a la Sección 10.8 para más información sobre los host virtuales.
Configuración de directrices para SSL
Las directrices en el archivo /etc/httpd/conf.d/ssl.conf se pueden configurar para activar las comunicaciones Web seguras usando SSL y TLS.
SetEnvIf
SetEnvIf configura las variables del entorno basado en las cabeceras de las conexiones entrantes. No es una directriz únicamente de SSL, aunque se presenta en el archivo /etc/httpd/conf.d/ssl.conf. En este contexto, su propósito es desactivar el keepalive del HTTP y permitir a SSL cerrar la conexión sin una alerta de notificación desde el navegador del cliente. Esta configuración es necesaria para ciertos navegadores que no cierran de forma confiable la conexión SSL.