Red Hat Linux 7.1: Official Red Hat Linux Reference Guide | ||
---|---|---|
Anterior | Capítulo 14. Módulos y directivas de Apache | Siguiente |
El archivo de configuración del servidor Web Apache es /etc/httpd/conf/httpd.conf. El archivo httpd.conf está bien comentado y es bastante autoexplicativo. La configuración predeterminada de secure Web server funciona para los ordenadores de la mayoría de los usuarios, así que probablemente no necesitará cambiar ninguna de las directivas en el fichero httpd.conf. Sin embargo, quizás quiera conocer el resto de las opciones de configuración más importantes.
Los ficheros vacíos srm.conf y access.conf se encuentran en el directorio /etc/httpd/conf. Precisamente estos ficheros junto con el fichero httpd.conf se utilizaron anteriormente como ficheros de configuración de Apache.
Si necesita configurar Apache sólo tiene que modificar el fichero httpd.conf y después recargar o bien apagar y arrancar el proceso del comando httpd. Para mayor información consulte la la sección de nombre Arranque y apagado del httpd.
Antes de modificar el fichero httpd.conf debe de copiar el fichero original dándole por ejemplo, el nombre httpd.confold u otro cualquiera. Si comete un error mientras está modificando el fichero de configuración, no se preocupe porque siempre dispone de una copia de seguridad.
Si comete un error y su servidor de web no funciona correctamente, el primer sitio donde acudir es lo que acaba de modificar en httpd.conf. Asegúrese de no haber cometido ningún gazapo. Después consulte el fichero de conexión de error (/var/log/httpd/error_log). Este puede ser difícil de interpretar, todo depende del nivel de experiencia. Si acaba de tener problemas, de todas formas, las últimas entradas deberían de ayudarle a saber lo que ha pasado.
Las siguientes secciones dan breves descripciones de las directivas incluídas en el fichero httpd.conf, ordenadas según se encuentran en él. Las descripciones no son exhaustivas. Si necesita más información, consulte la documentación de Apache en formato HTML en http://your_domain/manual/ o en la documentación del grupo Apache en http://www.apache.org/docs/. Para más información sobre las directivas mod_ssl, consulte la documentación incluída en formato HTML en http://your_domain/manual/mod/mod_ssl/, o vea el mod_ssl en el Manual del usuario en http://www.modssl.org/docs/2.7/.
El comando ServerType puede ser tanto inetd como standalone. El servidor de web tiene como comando predeterminado el ServerType standalone.
Dicho comando, el ServerType standalone significa que el servidor arranca cuando se han llevado a cabo todas las conexiones. Por otro lado,el comando ServerType inetd quiere decir que arranca una nueva instancia cada vez que se produzca una conexión HTTP. Cada una de las instancias del servidor contiene la conexión y aunque acabe conexión sigue existiendo. Como puede imaginarse, la utilización del comando inetd no sirve para mucho. Otro problema que se presenta con este comando es que puede no funcionar correctamente según el grupo Apache. Por último, debido a que tanto Red Hat Linux y 7.1 utilizan dicho comando se necesitaría añadir otra configuración para que el comando xinetd arrancase el servidor. Por ello, para evitar estos problemas le aconsejamos que el comando ServerType sea standalone.
El comando ServerRoot es el directorio principal donde se encuentran todos los ficheros del servidor. Tanto el servidor seguro como el no seguro utilizan un comando ServerRoot del /etc/httpd.
El comando LockFile configura el path al fichero de bloqueo utilizado por el servidor Apache cuando se compila con USE_FCNTL_SERIALIZED_ACCEPT o USE_FLOCK_SERIALIZED_ACCEPT. No se debería de cambiar el valor predeterminado del comando LockFile.
El comando PidFile nombra el archivo en el que el servidor graba su ID de proceso (pid). secure Web server está configurado para grabar su pid en /var/run/httpd.pid.
El comando ScoreBoardFile almacena información interna sobre el proceso del servidor que se utiliza para comunicar el proceso padre con los procesos hijos. secure Web server's El comando ScoreBoardFile se encuentra en /var/run/httpd.scoreboard..
La directiva ResourceConfig instruye al servidor a que lea el fichero ResourceConfig para buscar más directivas de configuración. La directiva ResourceConfig está comentada porque el servidor sólo usa httpd.conf para directivas de configuración.
La directiva AccessConfig instruye al servidor a leer el fichero AccessConfig para buscar más directivas de configuración, tras haber leído el fichero ResourceConfig. Dicha directiva está comentada porque el servidor sólo usa httpd.conf para directivas de configuración.
El comando Timeout define, en segundos, el tiempo que el servidor esperará para recibir y enviar peticiones durante la comunicación. Específicamente, el comando Timeout define cuánto esperará el servidor para recibir peticiones GET, cuánto esperará para recibir paquetes TCP en una petición POST o PUT y cuánto esperará entre una ACK y otra respondiendo a paquetes TCP. El comando Timeout está ajustado a 300 segundos, que es el tiempo apropiado para la mayoría de las situaciones.
El comando KeepAlive determina si el servidor permitirá varias conexiones a la vez (p.e., más de una petición por conexión). KeepAlive puede usarse para impedir que un cliente consuma muchos recursos del servidor. El comando KeepAlive aparece ya en on por defecto, lo que significa que se permiten varias conexiones a la vez. Puede ponerse en off para desactivarlas. Consulte la sección de nombre MaxKeepAliveRequests para conocer un método alternativo para limitar las peticiones.
Esta directiva establece el número máximo de peticiones permitidas por cada conexión que se produzca a la vez. El Grupo Apache recomienda un valor alto, lo que mejoraría el rendimiento. El valor predeterminado del comando MaxKeepAliveRequests es de 100 que debería bastar en la mayoría de los casos.
La directiva KeepAliveTimeout establece el número de segundos que el servidor esperará a la siguiente petición, tras haber dado servicio a una petición, antes de cerrar la conexión. Una vez recibida la petición, aplica la directiva Timeout en su lugar.
El servidor Web Apache se adapta dinámicamente a la carga percibida manteniendo un número apropiado de servidores libres basado en el tráfico. 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. El número de MinSpareServers no debería de ser elevado ya que creará una gran carga incluso cuando el tráfico fuese bajo.
StartServers establece cuántos procesos serán creados al arrancar. Ya que el servidor Web crea y elimina dinámicamente servidores según el tráfico, no se necesitará cambiar este parámetro. El servidor está configurado para arrancar ocho procesos al arrancar.
El comando MaxClients establece un límite al total de los procesos del servidor (es decir, clientes conectados simultáneamente) que se ejecutan a la vez. Debe mantener el comando MaxClients a un valor alto (el valor por defecto es 150), porque no se permitirán nuevas conexiones una vez que se alcance el número máximo de clientes simultáneamente conectados. El valor del comando MaxClients no puede superar el 256 sin que se haya recompilado Apache. La principal razón de tener el parámetro MaxClients es evitar que un servidor errático vuelva inestable al sistema operativo.
El comando MaxRequestsPerChild establece el número máximo de peticiones que cada proceso hijo procesa antes de morir. La principal razón para tener el comando MaxRequestsPerChild es evitar que procesos de larga vida pierdan memoria. El valor predeterminado de MaxRequestsPerChild para el servidor es de 100.
El comando Listen establece los puertos en los que secure Web server acepta las peticiones entrantes. secure Web server está configurado para escuchar en el puerto 80 para comunicaciones no seguras y (en máquinas virtuales que define el servidor seguro) en el puerto 443 para comunicaciones seguras.
Para puertos por debajo de 1024, el comando httpd deberá ser ejecutado como root. Para el puerto 1024 y superiores, el comando httpd puede ser ejecutado como si se fuera un usuario cualquiera.
El comando Listen también se puede usar para especificar direcciones IP específicas en las cuales aceptará conexiones el servidor.
BindAddress es un modo de especificar en qué direcciones IP el servidor escuchará. Debería usarse la directiva Listen en su lugar si se necesita esta funcionalidad. El servidor no usa el comando BindAddress el cual ya aparece comentado en httpd.conf.
El comando LoadModule se usa para cargar módulos Dynamic Shared Object(DSO). Para más información sobre el soprte de los DSOs de Apache y cómo usar la directiva LoadModule, lea la sección de nombre Añadir módulos a su servidor. Nótese que el orden de los módulos es importante, así que mejor no tocarlo.
Las etiquetas <IfDefine> y </IfDefine> rodean a directivas de configuración que son aplicadas si el test aplicado a la etiqueta <IfDefine> resulta verdadero; las directivas no se tienen en cuenta si el test es falso.
Dicho test aplicado a la etiqueta <IfDefine> es un nombre de un parámetro (p.ej., 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 secure Web server el test es verdadero y se aplican las directivas contenidas en las etiquetas IfDefine.
Por defecto, las etiquetas <IfDefine HAVE_SSL> rodean las etiquetas de la máquina virtual del servidor seguro. Las etiquetas <IfDefine HAVE_SSL> también rodean a las directivas LoadModule y a las AddModule para ssl_module.
El comando ClearModuleList se encuentra justo antes de la larga lista de directivas AddModule. ClearModuleList borra la lista interna de módulos del servidor. La lista de directivas AddModule recrea la lista, justo después de ClearModuleList.
AddModule es la directiva usada para crear una lista completa de módulos disponibles. Se usa la directiva AddModule para añadir módulos como DSO. Para más información sobre cómo usar el comando AddModule para el soporte DSO, vea la sección de nombre Añadir módulos a su servidor.
La directiva ExtendedStatus controla si Apache genera información de estado básico (off) o detallada (on), cuando se llama al gestor server-status. Se llama al gestor Server-status utilizando la etiqueta Location; Para mayor información sobre cómo llamar al server-status consulte la la sección de nombre Location
Normalmente, el comando Port define el puerto en el que escucha el servidor. secure Web server, sin embargo, escucha en más de un puerto por defecto, ya que la directiva Listen también se usa. Cuando la directiva Listen está en uso, el servidor escucha en todos esos puertos. Consulte la descripción de Listen para más información sobre el comando Listen.
El comando Port también se usa para especificar el número de puerto usado para crear el nombre canónico para el servidor. Consulte la la sección de nombre UseCanonicalName para más información sobre el nombre canónico del servidor.
La directiva User establece el userid usado por el servidor para responder a peticiones. El valor de User determina el acceso al servidor. Cualquier fichero al que no pueda acceder este usuario será también inaccesible al visitante de la web. El comando predeterminado para User es apache.
User debería sólo tener privilegios de tal manera que sólo puediera acceder a ficheros que se supone que todo el mundo puede ver. El comando User también es dueño del cualquier proceso CGI que arranque el servidor.Al comando User no se le debería permitir ejecutar ningún código que no esté pensado para responder peticiones HTTP.
Nota | |
---|---|
A menos que sepa exactamente lo que está haciendo, no utilice el comando User como si fuese root. Usar root para User creará grandes problemas de seguridad en secure Web server. |
El proceso httpd padre se ejecuta como root durante operaciones normales, pero pasa al usuario apache inmediatamente. El servidor debe arrancar como root porque necesita un puerto por debajo de 1024 (El puerto predeterminado para comunicaciones seguras es 443; el puerto por defecto para comunicaciones no seguras es el puerto 80). Los puertos por debajo de 1024 están reservados para el sistema, así que sólo se pueden usar si se es root. Una vez que el servidor se ha conectado al puerto, pasa el proceso a User antes de aceptar peticiones.
El comando Group es similar a User. Group establece el grupo en el que el servidor responde a las peticiones. El valor predeterminado del comando Group también es apache.
ServerAdmin debería ser la dirección de correo del administrador del secure Web server. Esta dirección de correo aparecerá en los mensajes de error generados por el servidor para páginas web,de tal manera que los usuarios pueden comunicar errores enviando correo al administrador. El comando ServerAdmin ya se encuentra en la dirección root@localhost.
Una forma buena y típica de configurar ServerAdmin es situarlo en la dirección webmaster@your_domain.com. Después cree un alias del webmaster para la persona responsable del servidor en /etc/aliases. Finalmente, ejecute /usr/bin/newaliases para añadir el nuevo alias.
El comando ServerName puede usarse para establecer el nombre de la máquina del servidor diferente al nombre real de máquina como por ejemplo, usar www.your_domain.com aunque el nombre real del servidor sea foo.your_domain.com. Nótese que ServerName debe ser un nombre "Domain Name Service" (DNS) válido que se tenga derecho a usar (no basta con inventar uno).
Si se especifica ServerName, hay que asegurarse de incluir la pareja nombre-dirección IP en el fichero /etc/hosts.
DocumentRootes 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 seguros y no seguros es /var/www/html. Por ejemplo, el servidor puede recibir una petición para el siguiente documento:
http://your_domain/foo.html |
El servidor buscará el fichero en el siguiente directorio por defecto:
/var/www/html/foo.html |
Si se quiere cambiar DocumentRoot para que no lo compartan los servidores seguros y no seguros, vea la sección de nombre Utilización de máquinas virtuales.
Las etiquetas <Directory /path/to/directory> y </Directory> se usan para agrupar directivas de configuración que sólo se aplican a ese directorio y sus subdirectorios. Cualquier directiva aplicable a un directorio puede usarse en las etiquetas <Directory>. Las etiquetas <File> pueden aplicarse de la misma forma a un fichero específico.
Por defecto,se aplican parámetros muy restrictivos al directorio raíz, utilizando Options (vea la la sección de nombre Options) y AllowOverride (vea la la sección de nombre AllowOverride). Con esta configuración, cualquier directorio del sistema que necesite valores más permisivos ha de ser configurado explícitamente.
La utilización de las etiquetas Location, permite al comando DocumentRoot (referido a "/") tener parámetros menos rígidos para que el servidor sirva las peticiones HTTP.
El directorio cgi-bin está configurado para permitir la ejecución de scripts CGI, con la opción ExecCGI. Si se necesita ejecutar un script CGI en cualquier otro directorio, habrá que configurar ExecCGI para ese directorio. Por ejemplo, si cgi-bin es /var/www/cgi-bin, pero se quiere ejecutar scripts CGI desde /home/my_cgi_directory, añadirá una directiva ExecCGI a un par de directivas Directory como las siguientes al fichero httpd.conf:
<Directory /home/my_cgi_directory> Options +ExecCGI </Directory> |
Para permitir la ejecución de scripts CGI en /home/my_cgi_directory, habrá que llevar a cabo pasos extra aparte de configurar ExecCGI. También necesitará anular el comentario de la directiva AddHandler para identificar ficheros con extensión .cgi como scripts CGI. Vea la la sección de nombre AddHandler para saber cómo configurar el comando AddHandler. El valor de los permisos para scripts CGI y el recorrido entero a los scripts, debe ser de 0755. Además, el dueño del script y del directorio deben ser el mismo.
La directiva Options controla características del servidor que están disponibles en un directorio en particular. Por ejemplo, en los parámetros restrictivos especificados para el directorio raíz, el comando Options sólo permite FollowSymLinks. No hay características permitidas, salvo que el servidor pueda seguir enlaces simbólicos en el directorio raíz.
Por defecto, en el directorio DocumentRoot, Options está configurado para incluir los comandos Indexes, Includes y FollowSymLinks. Indexes permite al servidor generar un listado de un directorio si no se especifica el DirectoryIndex (index.html, etc.). Includes implica que se permiten inclusiones en el servidor y el comando FollowSymLinks permite al servidor seguir enlaces simbólicos en ese directorio.
También se tienen que incluir declaraciones del comando Options para los directorios que estén dentro de directivas de máquinas virtuales, si se quiere que éstas reconozcan esas Options.
Por ejemplo, la inclusión en el servidor está activada en el directorio /var/www/html en la línea Options Includes dentro de la sección Location "/". Sin embargo, si se quiere que una máquina virtual reconozca que se permite realizar la inclusión desde el servidor en /var/www/html, habrá que incluir una sección como la siguiente desde dentro de las etiquetas de las máqinas virtuales:
<Directory /var/www/html> Options Includes </Directory> |
AllowOverride establece qué directivas Options puede obviar un archivo .htaccess. Por defecto, tanto el directorio raíz como DocumentRoot están configurados para no permitir la prevalencia de .htaccess.
Order simplemente controla el orden en que allow y deny se evaluan. El servidor está configurado para evaluar Allow antes que deny para el directorio DocumentRoot.
Allow especifica qué peticionario puede acceder un directorio dado. El peticionario puede ser all, un nombre de dominio, una dirección IP, una dirección IP parcial, un par red/máscara de red, etc. El directorio DocumentRoot está configurado para permitir peticiones de all (cualquiera).
Deny funciona como allow, pero especifica a quién se niega el acceso. DocumentRoot no está configurado para rechazar peticiones de nadie.
UserDir es el nombre del subdirectorio dentro del directorio de cada usuario dónde estarán los archivos HTML que serán servidos. Por defecto, el subdirectorio es public_html. Por ejemplo, el servidor podría recibir la siguiente petición:
http://your_domain/~username/foo.html |
El servidor buscaría el fichero:
/home/username/public_html/foo.html |
En el ejemplo, /home/username es el directorio del usuario (nótese que la ruta predeterminada a los directorios de los usuarios puede variar entre sistemas).
Hay que asegurarse que los permisos de los directorios de usuario sean correctos. El valor de los permisos deben ser de 0755. Los bits de lectura (r) y ejecución (x) deben estar activados en el directorio del usuario public_html (0755 valdrá). El valor de los permisos con que se servirán los ficheros desde public_html debe ser 0644 por lo menos.
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.
Por ejemplo, cuando un usuario pide la página http://your_domain/this_directory/, recibe la página DirectoryIndex si existe, o un listado generado por el servidor. El valor por defecto para DirectoryIndex es index.html, index.htm index.shtml e index.cgi. El servidor intentará encontrar cualquiera de estos cuatro, y entregará el primero que encuentre. Si no encuentra ninguno y si Options Indexes se encuentra en el directorio, el servidor generará un listado, en formato HTML, de los subdirectorios y archivos del directorio.
AccessFileName denomina el archivo que el servidor utilizará para controlar el acceso en cada directorio. Por defecto, el servidor utilizará .htaccess, si existe, para controlar el acceso en cada directorio.
Justo tras AccessFileName,el comando Files controla el acceso a cualquier archivo que empiece con .ht. Estas directivas niegan acceso a todo tipo de archivo .htaccess (u otros archivos que empiecen .ht) por razones de seguridad.
Por defecto, secure Web server requiere a los "proxies" que no hagan caché de los documentos que se negocian en base al contenido ( pueden cambiar en el tiempo o según los datos del peticionario). Si se anula el comentario del comando CacheNegotiatedDocs, se desactiva la función y los "proxies" podrán hacer caché de los documentos.
UseCanonicalName ya aparece en on. El comando UseCanonicalName permite que los URLs contengan sus propias referencias utilizando los comandos ServerName y Port. Cuando el servidor se refiere a si mismo en respuesta a peticiones de clientes, usa este URL. Si el UseCanonicalName está en off, el servidor utilizará el valor que vino en la petición del cliente para referirse a si mismo.
TypesConfig denomina el fichero que establece la lista predeterminada de mapeado de tipos MIME (extensiones de ficheros a tipos de contenido). El fichero predeterminado TypesConfig es /etc/mime.types. En vez de modificar el /etc/mime.types, se recomienda añadir mapeados de tipos MIMEs con AddType.
DefaultType establece el contenido por defecto que el servidor utilizará para documentos cuyos tipos MIME no puedan ser determinados. El servidor predispone el texto para cualquier fichero con un tipo de contenido indeterminado.
<IfModule> y </IfModule> envuelven a directivas que son condicionales. Las directivas contenidas dentro de IfModule son procesadas si se cumple una de las dos condiciones. Las directivas son procesadas si el módulo contenido en la etiqueta <IfModule> está compilado en el servidor Apache. O, si una "!" (exclamación) aparece antes del nombre; las directivas son procesadas sólo si el módulo en la etiqueta <IfModule> no está compilado.
El fichero mod_mime_magic.c está incluído en IfModule. El módulo mod_mime_magic puede compararse al comando UNIX file, que examina los primeros bytes de un fichero, y usa "números mágicos" y otros trucos para decidir el tipo MIME del fichero.
Si el módulo mod_mime_magic está compilado en Apache, estas etiquetas IfModule le dicen al módulo mod_mime_magic module donde está el fichero de los trucos: share/magic en este caso.
El módulo mod_mime_magic module no está compilado por defecto. Si se quier usar, vea la la sección de nombre Añadir módulos a su servidor, para saber cómo añadir módulos al servidor.
HostnameLookups puede aparecer en on o en off. Si el servidor permite la directiva HostnameLookups (poniéndolo en on), el servidor resolverá automáticamente la dirección IP de cada conexión que pida un documento del servidor. Resolver la dirección IP implica que el servidor hará una o más conexiones al DNS para averiguar qué nombre de máquina se corresponde con una dirección IP.
Generalmente, debería dejarse HostnameLookups en off porque las peticiones de DNS añanden carga al servidor y pueden ralentizarlo. Si el servidor tiene carga, los efectos de HostnameLookups pueden ser considerables.
HostnameLookups influye también en Internet en general. Cada conexión individual provoca una sobrecarga en el servidor. Por ello, por beneficio del servidor y de Internet en general, debería dejarse HostnameLookups en off.
ErrorLog nombra el fichero donde se guardan los errores del servidor.Como viene indicado, el fichero de error del servidor es /var/log/httpd/error_log.
El log de errores es un buen sitio para ver si el servidor genera errores y no se sabe muy bien qué pasó.
LogLevel establece cómo serán de abundantes los logs de error. Los niveles de error del LogLevel (de menor a mayor) son emerg, alert, crit, error, warn, notice, info or debug. El LogLevel de secure Web server está en warn (nivel medio).
LogFormat pone el formato para los mensajes en el log de acceso; afortunadamente, el formato hará que el log de acceso sea más legible.
CustomLog identifica el log y el formato de log. La configuración por defecto de CustomLog de secure Web server, define el log en el que se guardan los accesos al servidor /var/log/httpd/access_log. Habrá que saber la localización de este archivo si se quieren generar estadísticas de rendimiento del servidor.
CustomLog pone el formato común para el archivo. El formato común de log es de la siguiente forma:
remotehost rfc931 authuser [date] "request" status bytes |
El nombre de la máquina: Si el nombre no está disponible en el DNS, o sí HostnameLookups está en Off, entonces remotehost será la dirección IP de la máquina remota.
No utilizado: Se verá un - en el log en su lugar.
Si se requirió la autenticación, este es el usuario con el que el usuario se identificó. Generalmente, no se usa, así que se verá un - en su lugar.
Fecha y hora de la petición.
Cadena de texto de la petición según vino del cliente.
Código de estado HTTP que se devolvió al cliente.
Tamaño del documento.
El comando CustomLog puede utilizarse para configurar logs específicos para registrar referencias(el URL que hizo el enlace al servidor) y/o agentes (navegadores utilizados para pedir páginas al servidor). Las líneas relevantes del CustomLog están comentadas, como se muestra, pero se debería de anular el comentario si se quieren los dos archivos de log:
#CustomLog /var/log/httpd/referer_log referer #CustomLog /var/log/httpd/agent_log agent |
Alternativamente, se puede poner la directiva CommonLog para que use un log combinado sin el comentario en la siguiente línea:
#CustomLog /var/log/httpd/access_log combined |
Un fichero de log combined añadirá los campos agente y referer al final de cada línea. Si desea utilizar un fichero de log combined elimine el comentario que aparece en CustomLog.
El comando ServerSignature añade una línea que contiene la versión del servidor Apache y el ServerName de la máquina a los documentos generados por el servidor (p.ej, mensajes de error devueltos a clientes). ServerSignature ya aparece en on. Se puede cambiar a off para no añadir nada, o se puede cambiar a EMail. EMail añadirá una etiqueta HTML mailto:ServerAdmin a la línea de firma.
El comando Alias permite que haya directorios fuera del DocumentRoot a los que puede acceder el servidor. Cualquier URL que termine en un alias será automáticamente traducido por el recorrido del alias. Por defecto, ya existe un alias configurado. El servidor puede acceder al directorio icons pero el directorio no está en DocumentRoot. icons , un alias, está en /var/www/icons/, y no en /var/www/html/icons/.
El comando ScriptAlias define dónde pueden encontrarse los scripts CGI (u otros scripts). Normalmente, no se ponen los scripts CGI dentro de DocumentRoot. Si los scripts CGI se encontrasen en DocumentRoot, podrían , potencialmente, ser considerados como documentos de texto. Incluso si no preocupa que la gente vea (y use) los scripts CGI, mostrar cómo funcionan crea oportunidades a la gente sin escrúpulos que quiera explotar dichos agujeros en el script, y puede crear un agujero de seguridad en el servidor. Por defecto, el directorio cgi-bin es un ScriptAlias de /cgi-bin/, y se encuentra situado /var/www/cgi-bin/.
El directorio /var/www/cgi-bin tiene activada la directiva Options ExecCGI, lo que implica que se permite la ejecución de scripts CGI en el directorio.
Vea la la sección de nombre AddHandler y la la sección de nombre Directory para saber cómo ejecutar scripts CGI en otros directorios aparte de cgi-bin.
Cuando se cambia una página de sitio, el comando Redirect se puede usar para pasar del viejo URL al nuevo URL. El formato es como sigue:
Redirect /path/foo.html http://new_domain/path/foo.html |
Así que si se recibe una petición HTTP para un página que solía estar en http://your_domain/path/foo.html, el servidor devolverá el nuevo URL (http://new_domain/path/foo.html) al cliente, que tratará de coger el documento desde el nuevo URL.
El comando IndexOptions controla la apariencia de los listados generados por el servidor, al añadir iconos y texto descriptivo, etc. Si Options Indexes aparece como en (véase la sección de nombre Options),el servidor podrá generar el listado de un directorio al recibir una petición HTTP como la que sigue:
http://your_domain/this_directory/
Primero el servidor busca en el directorio un fichero de los de la lista de DirectoryIndex (p.ej., index.html). Si el servidor no encuentra ninguno de los ficheros, genera un listado del directorio en HTML. Se puede modificar la apariencia del listado utilizando ciertas directivas en httpd.conf, entre las que se encuentra IndexOptions.
La configuración predeterminada activa es FancyIndexing. Si se activa FancyIndexing, al hacer click en la cabecera de las columnas del listado, el listado se ordena según esa columna. Otro click en la misma cabecera cambiará el orden de ascendente a descendente y viceversa. FancyIndexing también muestra distintos iconos para distintos ficheros, según la extensión. Si se usa la directiva AddDescription y se activa FancyIndexing, se añade una pequeña descripción para el fichero en el listado generado.
IndexOptions tiene otros parámetros que pueden activarse para controlar la apariencia de los listados. Los parámetros incluyen IconHeight e IconWidth, para hacer que el servidor incluya etiquetas HEIGHT y WIDTH para los iconos; el comando IconsAreLinks, hace que los iconos formen parte del enlace HTML junto con el nombre del fichero, y otros.
Esta directiva denomina qué iconos se mostrarán con los archivos según su codificación MIME, en los listados de directorio. Por ejemplo, por defecto, el servidor muestra el icono compressed.gif junto a archivos con codificación MIME x-compress y x-gzip en los listados de directorio.
Esta directiva denomina qué iconos se mostrarán con los archivos según su 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 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 muestra el icono binary.gif para archivos con extensiones .bin o .exe.
El comando DefaultIcon nombra el icono de los listados del directorio que recibirán los ficheros sin un icono específico. El fichero de imagen predeterminado para esos ficheros unknown.gif es DefaultIcon.
Se puede usar AddDescription para mostrar descripciones específicas de ficheross en los listados de los directorios (habrá que activar también el FancyIndexing como una IndexOptions). Puede aplicarse a ficheros individuales, expresiones de nombre o extensiones para especificar los ficheros a los que aplicar esta directiva. Por ejemplo, podría usarse lo siguiente:
AddDescription "A file that ends in .ni" .ni |
En los listados del directorio, todos los ficheros con extensión .ni tendrán la descripción Un archivo que termina en .ni tras el nombre. Nótese que necesita activarse el FancyIndexing.
La directiva ReadmeName determina el fichero (si existe dentro del directorio) que se adjuntará a los listados de los directorios. El servidor intentará primero incluirlo como documento HTML y luego como texto. El valor predeterminado de ReadmeName es README.
La directiva HeaderName dicta el fichero (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 como texto.
El comando IndexIgnore lista las extensiones, los nombres de los ficheros parciales, las expresiones regulares o los nombres completos. El servidor no incluirá los ficheros que encajen en estos patrones en los listados de directorios.
El comando AddEncoding dice qué extensiones especifican un tipo particular de codificación. AddEncoding se puede usar para decirle a los navegadores (no a todos) que descompriman ciertos ficheros mientras los descargan.
La directiva AddLanguage asocia extensiones a contenidos específicos de idiomas. Esta directiva es útil para la negociación de contenidos, cuando el servidor devuelve uno de entre varios documentos según las preferencias de idiomas del cliente.
La directiva LanguagePriority permite dar la prioridad a ciertos ficheros en distintos idiomas, que entrarán en vigor si el cliente no especifica la preferencia de idioma.
Use la directiva AddType para definir parejas de tipos MIME y sus extensiones. Por ejemplo, si usa el PHP4, el servidor está usando AddType para que se reconozcan ficheros con extensiones PHP (.php4, .php3, .phtml .php) como tipos MIME PHP.
La siguiente línea AddType permite al servidor reconocer las extensiones .shtml (para la inclusión en el servidor):
AddType text/html .shtml |
Se necesitará la línea de arriba dentro de las etiquetas de máquina virtual para cuando se permita la inclusión desde el servidor.
La directiva AddHandler mapea y amplia gestores específicos. Por ejemplo, el gestor cgi-script puede usarse para hacer que la extensión .cgi automáticamente sea manejada como un script CGI. Esto funciona, incluso para ficheros fuera de ScriptAlias, si se siguen las instrucciones dadas.
Hay una línea AddHandler CGI en httpd.conf como la siguiente:
AddHandler cgi-script .cgi |
Habrá que anular el comentario de la línea. Así Apache ejecutará como scripts CGI los ficheros que terminen en .cgi, incluso si están fuera de ScriptAlias, que por defecto se encuentra en el directorio /cgi-bin/ en /var/www/cgi-bin/.
También habrá que activar ExecCGI como Options para cualquier directorio que contenga scripts CGI. Vea la sección de nombre Directory para más información sobre cómo configurar ExecCGI para un directorio. Además, habrá que asegurarse que los permisos sean los adecuados para los scripts CGI y los subdirectorios que contengan scripts. Los scripts CGI y todo el recorrido que conduce a ellos deben tener un valor de 0755. Finalmente, el dueño del directorio y el del script deben ser el mismo.
Habrá que añadir la misma línea AddHandler a la configuración de VirtualHost, si se usan máquinas virtuales y se quiere que se reconozcan los scripts CGI fuera de ScriptAlias.
El servidor también usa AddHandler para procesar mapas de imágenes en HTML.
La directiva Action permite especificar un par de tipos de contenido MIME y un script CGI, de tal forma que cuando se pida un fichero de este tipo, se ejecute un script en particular.
MetaDir especifica el nombre del directorio donde el servidor debería buscar los ficheros que contengan información meta (cabeceras extra de HTTP) que se deba incluir al entregar los documentos.
MetaSuffix especifica el sufijo para los ficheros que contienen información meta (cabeceras extra de HTTP), que estarán en el directorio MetaDir.
Por defecto, en caso de error, el servidor muestra un mensaje de error (generalmente críptico) para el cliente. En vez de usar esta opción ya predeterminada, puede usarse ErrorDocument para devolver un mensaje de error personalizado o redireccionar al cliente a un URL local o remoto. ErrorDocument simplemente asocia un código de respuesta HTTP con un mensaje o un URL que se devolverá al cliente.
La directiva BrowserMatch permite al servidor definir variables de entorno y/o tomar acciones según sea el campo de cabecera User-Agent, que identifica al 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 con problemas de esas características.
Las etiquetas <Location> y </Location> permiten controlar el acceso específico a cada URL.
El primer uso de Location es configurar Options y proporcionar guías extra de configuración para DocumentRoot. Estas directivas de configuración, que se encuentran dentro de las etiquetas <Location "/"> y </Location>, son necesarias para permitir el acceso a documentos en DocumentRoot.
El siguiente uso de Location es en las etiquetas IfModule mod_perl.c. Estas directivas de configuración funcionan si el DSO mod_perl.so está cargado. Consulte la la sección de nombre Añadir módulos a su servidor para más información sobre cómo añadir módulos a Apache.
La etiqueta Location nombra el directorio /var/www/perl (un Alias para /perl) como el directorio desde el cual se sirven scripts de Perl. Si se pide un documento con un URL que contenga /perl en el recorrido, el servidor buscará en /var/www/perl/ el script de Perl apropiado.
Los comentarios de otras opciones de <Location> están en httpd.conf. Si se quiere activar su funcionalidad, se necesitará anular el comentario de la sección apropiada de las directivas.
Justo tras las directivas de Perl discutidas anteriormente, httpd.conf incluye una sección de directivas para activar HTTP PUT (p.ej., publicación de Netscape Gold, que permite poner páginas web en un servidor). Si se quiere permitir HTTP PUT, habrá que anular el comentario de la sección entera:
#LoadModule put_module modules/mod_put.so #AddModule mod_put.c # #Alias /upload /tmp #<Location /upload> # EnablePut On # AuthType Basic # AuthName Temporary # AuthUserFile /etc/httpd/conf/passwd # EnableDelete Off # umask 007 # <Limit PUT> # require valid-user # </Limit> #</Location> |
Si se quiere que las conexiones desde dentro del mismo dominio tengan acceso a los informes de estado, se debe anular el comentario de la siguiente sección de directivas:
#<Location /server-status> # SetHandler server-status # Order deny,allow # Deny from all # Allow from .your_domain.com #</Location> |
Hay que poner el segundo nivel del nombre de dominio en vez de .your_domain.com.
Si se quiere dar informes de configuración del servidor (incluyendo módulos instalados y directivas de configuración) o peticiones desde dentro del dominio, habrá que anular el comentario de las siguientes líneas:
#<Location /server-info> # SetHandler server-info # Order deny,allow # Deny from all # Allow from .your_domain.com #</Location> |
Hay, por supuesto, que rellenar .your_domain.com.
La siguiente sección de directivas usa las etiquetas Location para permitir el acceso a la documentación en /usr/share/doc (p.ej, con un URL como http://your_domain/doc/whatever.html). Estas directivas sólo permiten el acceso a peticiones desde la misma máquina.
Otro uso de las etiquetas Location es una sección comentada, pensada para rastrear ataques al servidor explotando un viejo fallo de los días de pre-Apache 1.1. Si se quieren rastrear estas peticiones, anule el comentario de las siguientes líneas:
#<Location /cgi-bin/phf*> # Deny from all # ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi #</Location> |
Si estas líneas no están comentadas, el servidor mandará cualquier petición que termine en /cgi-bin/phf* a un CGI que hace log del Grupo Apache.
Si se anula el comentario de la directiva IfModule alrededor del ProxyRequests, el servidor Apache también funcionará como proxy. También habrá que cargar el módulo mod_proxy. Para más información sobre cómo cargar módulos, vea la la sección de nombre Añadir módulos a su servidor.
La directiva ProxyVia controla si se envía HTTP Via: junto con peticiones o respuestas que vayan vía el servidor proxy Apache. Via: header mostrará el nombre de la máquina si ProxyVia aparece en On, el nombre de máquina y la versión de Apache para Full, y cualquier línea Via: se enviará sin cambiar si está ProxyVia está en Off, y las líneas Via: serán eliminadas si está en Block.
Hay varias directivas de caché en las etiquetas de proxy IfModule mencionadas antes. Si se usa la funcionalidad proxy y se quiere habilitar el caché proxy, habrá que anular el comentario de las directivas según se describe. Los valores predeterminado de las directivas de caché deberían bastar para la mayoría de las configuraciones.
CacheRoot pone el nombre del directorio que contiene ficheros de caché. El valor predeterminado de CacheRoot es /var/cache/httpd.
CacheSize establece cuánto espacio puede usar el caché, en KB. El valor predeterminado de CacheSize es 5 KB.
CacheGcInterval establece el número de horas. Tras ese número se borrarán los ficheros de caché si ocupan más de lo permitido por CacheSize. El valor por defecto de CacheGcInterval es cuatro horas.
Los documentos HTML en caché se guardarán (sin una recarga desde el servidor de origen) durante el número máximo de horas establecido por CacheMaxExpire. El valor predeterminado es 24 horas.
CacheLastModifiedFactor afecta a la fecha de caducidad para documentos que no venían con caducidad desde el servidor de origen. El valor predeterminado de CacheLastModifiedFactor es 0.1, lo que significa que la caducidad del documento será un décimo del tiempo total desde que se modificó el documento por última vez.
CacheDefaultExpire es la caducidad en horas para documentos recibidos vía protocolos que no soportan la caducidad. El valor predeterminado es de una hora.
Todo documento que provenga de una máquina y/o de un dominio que encaje en NoCache no se pondrá en caché. Si conoce máquinas o dominios en los que no se quiera hacer caché de sus documentos, anule el comentario de la directiva NoCache e introduzca dominios y nombres aquí.
Necesitará usar la directiva NameVirtualHost para la dirección IP (y número de puerto si es necesario) de algún nombre de máquinas virtuales que esté estableciendo. La configuración basada en máquinas virtuales se usa para establecer máquinas virtuales para diferentes dominios, pero no tiene (o no usa) diferentes direcciones IP para todos los dominios a los cuales su Web Server sirve documentos
Nota | |
---|---|
No puede usar nombres basados en máquinas virtuales con su servidor seguro. Algunos nombres basados en máquinas virtuales que establezca trabajarán sólo con conexiones HTTP no seguras y no con conexiones SSL. No puede usar nombres basados en máquinas virtuales con su servidor seguro porque el acuerdo SSL (cuando el navegador acepta el certificado de autenticación de Web seguro) viene antes de la peticion HTTP con la cual identifica el nombre correcto de las máquinas virtuales. En otras palabras, la autenticación viene antes de la identificación de las máquinas virtuales. Si quiere usar máquinas virtuales con su servidor seguro necesitará usar direcciones IP basadas en máquinas virtuales. |
Si está usando nombres basados en máquinas virtuales, comente la directiva NameVirtualHost y añada la dirección IP correcta para su servidor después del NameVirtualHost. Entonces añada más información sobre los diferentes dominios usando el comando VirtualMachine el cual envuelve el ServerName para cada máquina virtual, más algunas otras directivas de configuración que son sólo aplicables a la máquina virtual.
<VirtualHost> y </VirtualHost> envuelven directivas de configuración que se aplican a máquinas virtuales. La mayoría de las directivas de configuración pueden usarse en etiquetas de máquina virtual, y sólo se aplicarán a esa máquina virtual.
Existen varias etiquetas VirtualHost que rodean a algunos modelos de directivas de configuración así como de espacios en blanco que tendrá que rellenar con información para configurar la máquina virtual. Consulte la la sección de nombre Utilización de máquinas virtuales, para saber más sobre máquinas virtuales.
La directiva de configuración de Apache SetEnvIf se usa para desactivar HTTP keepalive y permitir a SSL cerrar las conexiones sin avisar desde el cliente. Este parámetro es necesario para clientes que no cierran bien la conexión SSL.
Se han incluído las directivas SSL en su fichero de servidores httpd.conf para permitir comunicaciones seguras Web usando las directivas SSL y TLS.
Para más información sobre directivas SSl consulte: http://your_domain/manual/mod/mod_ssl/ o también: http://www.modssl.org/docs/2.6/ssl_reference.html/,un capítulo en un documento Web sobre mod_ssl por Ralf Engelschall. El mismo documento, el mod_ssl User Manual, comienza en http://www.modssl.org/docs/2.7/ y es una estupenda referencia para mod_ssl (of course) y para criptografía web en general. Este manual da información general sobre su servidor seguro se encuentra en Capítulo 13.
Nota | |
---|---|
No modifique sus directivas SSl a menos que esté completamente seguro de lo que está haciendo. Para la mayoría de los secure Web server, las directivas SSL están configuradas e instaladas apropiadamente. |