Diferencia entre revisiones de «Usuario:ManuelRomero/modulo APACHE/Directivas»
De WikiEducator
(→Directivas) |
(→Port) |
||
(15 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 2: | Línea 2: | ||
<br> | <br> | ||
− | + | ==Qué son las directivas== | |
*Las directivas son variables predefinidas que utiliza el fichero/s de configuración de del servidor Apache | *Las directivas son variables predefinidas que utiliza el fichero/s de configuración de del servidor Apache | ||
*Gracias a ellas podemos personalizar el comportamiento del servidor web | *Gracias a ellas podemos personalizar el comportamiento del servidor web | ||
Línea 8: | Línea 8: | ||
*Dentro del fichero de configuración el signo # indica un comentario (se ignora esa línea) | *Dentro del fichero de configuración el signo # indica un comentario (se ignora esa línea) | ||
{{Conocimiento previo|Cualquier cambio en la configuración del servidor tendrá efecto después de reniciarlo}} | {{Conocimiento previo|Cualquier cambio en la configuración del servidor tendrá efecto después de reniciarlo}} | ||
− | + | ==Referencias== | |
#[http://livenudefrogs.com/~anubis/apache/httpd-conf.shtml Fichero de configuracion] comentado y con referencias a la web | #[http://livenudefrogs.com/~anubis/apache/httpd-conf.shtml Fichero de configuracion] comentado y con referencias a la web | ||
#[http://livenudefrogs.com/~anubis/apache/ Referencias] relacionadas con apache | #[http://livenudefrogs.com/~anubis/apache/ Referencias] relacionadas con apache | ||
Línea 14: | Línea 14: | ||
#[http://httpd.apache.org/docs/2.4/es/mod/quickreference.html Formas de uso] de las directivas de la página oficial | #[http://httpd.apache.org/docs/2.4/es/mod/quickreference.html Formas de uso] de las directivas de la página oficial | ||
#[http://httpd.apache.org/docs/2.4/mod/directive-dict.html#Context Terminos usados] para describir el uso de directivas | #[http://httpd.apache.org/docs/2.4/mod/directive-dict.html#Context Terminos usados] para describir el uso de directivas | ||
− | + | ==Directivas== | |
− | + | *Podemos ver las directivas habitadas con el comando apache2ctl o apachectl (puede variar en diferentes distribuciones. | |
− | + | *Este es un comando muy útil | |
+ | -h para ver la ayuda | ||
+ | -l lista los módulos compilados | ||
+ | -M lista los módulos añadidos de forma estática | ||
+ | -L lista las directivas de compilación disponibles con una explicación | ||
+ | Dispone de muchas utilidades (verison, | ||
+ | ===<font color=green>ServerRoot</font>=== | ||
:Corresponde al directorio donde se ha instalado el apache | :Corresponde al directorio donde se ha instalado el apache | ||
:No se debería cambiar (Si se cambia el servidor no deja de funcionar) | :No se debería cambiar (Si se cambia el servidor no deja de funcionar) | ||
− | :Posteriormente podemos hacer | + | :Posteriormente podemos hacer referencia a este directoria a través de la referencia '''''%SeverRoot%''''' |
ServerRoot /var/ | ServerRoot /var/ | ||
:Cuando se especifican rutas relativas siempre se tomarán respecto a la ubicación de ServerRoot | :Cuando se especifican rutas relativas siempre se tomarán respecto a la ubicación de ServerRoot | ||
− | + | <HR/> | |
+ | ===<font color=green>PidFile</font>=== | ||
+ | |||
:Ubicación del fichero donde el servidor guarda su ID de proceso | :Ubicación del fichero donde el servidor guarda su ID de proceso | ||
:Por defecto se ubica en %ServerRoot%/logs/httpd.pid | :Por defecto se ubica en %ServerRoot%/logs/httpd.pid | ||
PidFile logs/httpd.pid | PidFile logs/httpd.pid | ||
− | + | <HR/> | |
+ | ===<font color ="green">Timeout</font>=== | ||
:Tiempo en segundos en los que se esperan las respuestas en la comunicación | :Tiempo en segundos en los que se esperan las respuestas en la comunicación | ||
:Pasado este tiempo se entiende que la comunicación se ha cortado | :Pasado este tiempo se entiende que la comunicación se ha cortado | ||
:Por defecto se estable a valor de 300 | :Por defecto se estable a valor de 300 | ||
Timeout 300 | Timeout 300 | ||
− | + | <HR/> | |
+ | ===<font color=green>KeepAlive MaxKeepAliveRequest KeepAliveTimeout</font>=== | ||
:Permitir o no varias peticiones por conexión | :Permitir o no varias peticiones por conexión | ||
KeepAlive off | KeepAlive off | ||
Línea 38: | Línea 48: | ||
:'''''MaxKeepAliveRequest''''' para limitar el número de peticiones en cada conexión. | :'''''MaxKeepAliveRequest''''' para limitar el número de peticiones en cada conexión. | ||
:'''''KeepAliveTimeout''''' establece el tiempo que el servidor espera antes de atender una nueva petición de la misma conexión. | :'''''KeepAliveTimeout''''' establece el tiempo que el servidor espera antes de atender una nueva petición de la misma conexión. | ||
− | + | <HR/> | |
+ | ===<font color=green>ifModule</font>=== | ||
:Verifica la existencia de un determinado módulo | :Verifica la existencia de un determinado módulo | ||
:En caso de que exista el módulo se establece un bloque de opciones | :En caso de que exista el módulo se establece un bloque de opciones | ||
Línea 48: | Línea 59: | ||
Definiciones a tener en cuenta si '''''no''''' está cargado el módulo ''nombre_modulo'' | Definiciones a tener en cuenta si '''''no''''' está cargado el módulo ''nombre_modulo'' | ||
</ifModule> | </ifModule> | ||
− | + | <HR/> | |
− | + | ===<font color=green>StartServer MaxClient MaxRequestsPerChild</font>=== | |
:Número de servidores que se crearán al arrancar el servicio | :Número de servidores que se crearán al arrancar el servicio | ||
StartServer 5 | StartServer 5 | ||
Línea 58: | Línea 69: | ||
:: En caso de tener el valor '''''0''''' (''valor por defecto'') no se limita el número de peticiones que un proceso hijo puede atender | :: En caso de tener el valor '''''0''''' (''valor por defecto'') no se limita el número de peticiones que un proceso hijo puede atender | ||
− | + | ===<font color=green>Port</font>=== | |
− | < | + | |
:Puerto que abre el servidor web para atender las solicitudes | :Puerto que abre el servidor web para atender las solicitudes | ||
:Si no se especifica se asigna el puerto 80 | :Si no se especifica se asigna el puerto 80 | ||
#establecemos el puert 7900 en lugar del puerto 80 | #establecemos el puert 7900 en lugar del puerto 80 | ||
Port 7900 | Port 7900 | ||
− | + | *PAra ver un listado de los puertos http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml | |
+ | <HR/> | ||
+ | |||
+ | ===<font color=green>Listen</font>=== | ||
:Direcciones IP y puertos en los que escucha el servidor además de los puertos por defecto | :Direcciones IP y puertos en los que escucha el servidor además de los puertos por defecto | ||
#Listen [IP-address:]portnumber | #Listen [IP-address:]portnumber | ||
Línea 72: | Línea 85: | ||
#Aquí establecemos que además del puerto 80, escuche también por el puerto 8080 | #Aquí establecemos que además del puerto 80, escuche también por el puerto 8080 | ||
Listen 8080 | Listen 8080 | ||
− | |||
<HR/> | <HR/> | ||
+ | ===<font color=green>LoadModule</font>=== | ||
:Esta directiva permita cargar nuevos módulos como si se tratara de ensambar un nuevo componente sin tener que volver a compilar los fuentes | :Esta directiva permita cargar nuevos módulos como si se tratara de ensambar un nuevo componente sin tener que volver a compilar los fuentes | ||
:Apache normalmente viene con la opcion '''''DSO''''' ''Dinamic Shared Object'', por lo que podemos agregar nuevos módulos | :Apache normalmente viene con la opcion '''''DSO''''' ''Dinamic Shared Object'', por lo que podemos agregar nuevos módulos | ||
:Los módulos con los que se compilaron los fuentes no hacen falta volver a cargarlos. Sólo sería para añadir nuevos módulos que queramos incorporar | :Los módulos con los que se compilaron los fuentes no hacen falta volver a cargarlos. Sólo sería para añadir nuevos módulos que queramos incorporar | ||
− | + | <HR/> | |
− | : | + | ===<font color=green>User Group</font>=== |
+ | :Estas directivas especifican el identificador de '''''usuario, grupo''''' con el que el servidor responderá a las peticiones. Es decir el '''''usuario,grupo''''', propietario del proceso hijo que atiende las solicitudes del cliente <!-- Cometar esta frase a Nacho para verificar su verdad--> | ||
+ | :Para usar esta directiva, el servidor debe haber sido iniciado como root. | ||
+ | :Si se inicia Apache con un usario distinto de root, no se podrá cambiar a un usuario con menores privilegios, y el servidor continuará ejecutándose con el usuario original. | ||
+ | :Si inicia el servidor como root, entonces es normal que el procedimiento padre siga ejecutándose como root. | ||
+ | :Un nombre de ususario, se refiere al usuario dado por su nombre. | ||
+ | :'''''#''''' seguido por un número de usuario. | ||
+ | ::Se refiere al usuario que corresponde a ese número. | ||
+ | User ''nombre_usuario'' | ||
+ | User #''num_id_usuario'' | ||
+ | Group ''nombre_usuario'' | ||
+ | Group #''num_id_usuario'' | ||
+ | |||
+ | |||
+ | ===<font color=green>ServerAdmin</font>=== | ||
+ | |||
+ | ServerAdmin direccion_email|URL | ||
+ | *Permite especificar la dirección del administrador que se mostrará al cliente en caso de que se produzca un error | ||
+ | |||
+ | <hr/> | ||
+ | |||
+ | ===<font color=green>ServerName</font>=== | ||
+ | *Especifica el nombre del servidor | ||
+ | ServerName nombre_basado_dominio[:port] | ||
+ | *Es recomendado utilizarlo, si no se utiliza se intentará deducirlo a partir de la ip y de una resolución inversa con el DNS | ||
+ | <hr/> | ||
+ | |||
+ | ===<font color = green><h3>DocumentRoot</h3></font>=== | ||
+ | |||
+ | DocumentRoot directorio | ||
+ | *Valor por defecto: DocumentRoot /usr/local/apache/htdocs | ||
+ | *Especificamos el directorio raíz donde queremos colgar las páginas web | ||
+ | *Si dentro de este directorio creamos subdirectorios, podremos acceder a ellos y ver su contendido | ||
+ | *Una vez especificado el '''''DocumentRoot''''', deberemos detallar su accesibilidad del directorio en la directiva '''''Directory''''' | ||
+ | DocumentRoot /www/myWebs/ | ||
+ | .... | ||
+ | <Directory "/www/myWebs"> | ||
+ | ... | ||
+ | <hr/> | ||
+ | |||
+ | ===<font color=green>Directory</font>=== | ||
+ | <Directory directory-path> | ||
+ | ... #opciones de acceso y comportamiento | ||
+ | </Directory> | ||
+ | *Configuramos el comportamiento y permisos de un directorio especificado | ||
+ | *Si nos se especifica de forma explícita dicho comportamiento será aplicado de forma recursiva a los subdirectorios | ||
+ | *Por defecto aparece en dos ocasiones una muy restrictiva para el directorio raiz y otra más permisiva para el directorio donde comparitimos los ficheros | ||
+ | |||
+ | <Directory /> | ||
+ | Options FollowSymLinks | ||
+ | AllowOverride None | ||
+ | Order deny,allow | ||
+ | Deny form all | ||
+ | </Directory> | ||
+ | |||
+ | <Directory /> | ||
+ | Options FollowSymLinks | ||
+ | AllowOverride None | ||
+ | Order deny,allow | ||
+ | Deny form all | ||
+ | </Directory> | ||
+ | *A continuación vemos las diferentes opciones utilizadas | ||
+ | <HR/> | ||
+ | ===<font color=green>Options</font>=== | ||
+ | *Establece la opciones que va a tener el servidor al acceder a un directorio en concreto. | ||
+ | *Puede tomar uno de los siguientes valores | ||
+ | #None : No se activa ninguna de las caracteristicas adicionales | ||
+ | #All :Se activan todas las características expceto la de MultiView | ||
+ | #ExecCGI: permita la ejecución de script CGI usando mod_cgi | ||
+ | #FollowSymLinks: El servidor puede seguir enlaces simbólicos en ese directorio. | ||
+ | #SymLinksIfOwnerMatch: Solo seguirá enlaces simbólicos si el directorio de destino es del mismo usuario que el enlace. | ||
+ | #Includes: Permite ''server-side includes''.Esto es permiten a un fichero HTML incluir otros ficheros. | ||
+ | #IncludesNOEXEC: En este caso deshabilita el # exec cmd y # exec cgi. | ||
+ | #Indixes: Muestra una lista formateada del contenido de los directorios, si no existe el DirectoryIndex (como el index.html) en el directorio solicitado. Por razones de seguridad, esto no debería establecerse, y desde luego no en el directorio indicado por DocumentRoot.Esta opción debe de estar habilitada con cuidado (y sólo para ciertos directorios) sólo si esta seguro de querer que los usuarios vean todo el contenido del directorio. | ||
+ | #MultiViews Soporte para vistas múltiples negociadas por contenido; esta opción está desactivada de forma predeterminada por motivos de seguridad. | ||
+ | |||
+ | ===<font color=green>AllowOverride</font>=== | ||
+ | AllowOverride All|None|tipo_directorio [tupo_directorio] ... | ||
+ | *Especifica el tipo de directorios que pueden ser incluidos en el fichero .htaccess. | ||
+ | *El valor de ''tipo_directorio'' puede tener uno de los siguientes valores | ||
+ | #None Ignora el fichero '''''.htaccess''''' | ||
+ | #AuthConf Permite usar directivas de autorización (AuthName, AuthType, ...) | ||
+ | #FileInf Se pueden usar directivas que controlan el tipo de documentos SetInputFilter, SetOutputFilter, ) | ||
+ | #Indexes para gestionar el listado de ficheros y directorios | ||
+ | #Limit establecer directivas que controlan el acceso (Allow, deny y order) | ||
+ | #Options=[Option,..-] Permitir el uso de directivas que controlan funciones específicas del directorio. | ||
+ | <HR/> | ||
+ | ===<font color=green>Order</font>=== | ||
+ | Order lista_permisos | ||
+ | *Controla el orden en el cual se aplicarán los permisos a un directorio | ||
+ | *Lista_permisos puede tener los siguientes valores | ||
+ | #Allow,Deny: Primero se evalúan todas las directivas ''Allow'' , y acontinuación son evaluadas las directivas 'Deny''. Si la solicitud no coindice con ninguna premisa establecida, por defecto es rechazado | ||
+ | #Deny,Allow: Se realiza las evaluaciones en orden inverso | ||
+ | *Veamos un ejemplo | ||
+ | :En la siguiente especiviación todos los host del dominio enlaces.es tienen acceso, rechando cualquier acceso de cualquier otra ubicación de solicitud. | ||
+ | |||
+ | Order Deny,Allow | ||
+ | Deny from all | ||
+ | Allow from enlaces.es | ||
+ | <hr/> | ||
+ | ====Deny==== | ||
+ | |||
+ | <hr/> | ||
+ | ===<font color=green>UserDir</font>=== | ||
+ | *Indica si se debe permitir que cada usuario de nuestro sistema tenga su porpia carpeta personal en el servidor web, estableciendo cual será la ruta desde el servidor para acceder a dicha carpeta. | ||
+ | *Activando esta opción, se puede conseguir que cada uno tenga su propia web personal. | ||
+ | *Una opción frecuente sería | ||
+ | UserDir public_html | ||
+ | *Con esta opción se crearía en nuestro servidor rutas para cada usuario. | ||
+ | *Por ejemplo usuarios Luis, Maria , Sonia, establecería las rutas | ||
+ | www.enlaces.es/~Luis | ||
+ | www.enlaces.es/~Maria | ||
+ | www.enlaces.es/~Sonia | ||
+ | *Por otro lado cada usuario tendría en su home un subdirectorio ''public_html'' para publicar ahí las páginas web | ||
+ | *Si queremos deshabilitarlo (opción por defecto) | ||
+ | UserDir disable | ||
+ | *Por seguridad no deberíamos permitir acceso a ninguna carpeta del home de root | ||
+ | Userdir disabled root | ||
+ | <hr/> | ||
+ | |||
+ | |||
+ | ===<font color=green>DirectoryIndex</font>=== | ||
+ | DirectoryIndex disabled |fichero [fichero]... | ||
+ | *Establece el nombre del fichero que apache servira cuando se le realice una solicitud al directorio raiz del servidor (especificado en '''''DocumentRoot''''') | ||
+ | *En caso de no encontrarse ningún fichero Apache servira una lista de los fichero disponibles en ese directorio (opción Indexes del directorio DocumentRoot) | ||
+ | *Se puede especificar una lista separada por espacios de fichero y el servidor servirá el primer fichero que localice en el directorio | ||
+ | DirectoryIndes index.html index.htm index.php | ||
+ | <hr/> | ||
+ | |||
+ | |||
+ | ===<font color=green>AccessFileName</font>=== | ||
+ | AccessFileName nombreFichero [nombreFichero] ... | ||
+ | *Especifica el nombre del fichero en el que se especificarán las directiva de acceso para cada directorio. Esta es una alternativa a especificar de forma explícita dichos directivas en el fichero de configuración | ||
+ | Valor por defecto: AccessFileName .htaccess | ||
+ | <hr/> | ||
+ | ===<font color=green>Files</font>=== | ||
+ | *Es una directiva para determinar accesos a ficheros. | ||
+ | *Se pueden especificar expresiones regulares en cuyo caso usarempos '''''<FileMatch> o bien poniendo ~ despues de files | ||
+ | <Files ~ "\.(gif|jpe?g|png)$"> | ||
+ | <FileMatch <"^\.ht> | ||
+ | Order allow,deny | ||
+ | Deny from all | ||
+ | Satisfy all | ||
+ | </FileMatch> | ||
+ | <hr/> | ||
+ | |||
+ | ===<font color=green>UseCanonicalName</font>=== | ||
+ | UseCanonicalName on | ||
+ | *Indica a apache que cada vez que tengamos que contruir direcciones que le hagan referencia, lo haga con el nombre canónico (Establecido en ServerName) y el puerto y no use el hostname | ||
+ | <hr/> | ||
+ | |||
+ | |||
+ | ===<font color=green>TypesConfig</font>=== | ||
+ | Detalla la ubicación del fichero que contiene la descripción de los tipos MIME. Este fichero mime.types suele estar en el directorio /conf | ||
+ | TypesConfig /conf/mime.types | ||
+ | <hr/> | ||
+ | |||
+ | ===<font color=green>DefaultType</font>=== | ||
+ | *Establece el tipo mime por defecto. | ||
+ | *Este tipo será asignado a todos aquellos ficheros a los cuales no se les pueda asignar tipo según la descripción detallada en el fichero mime.types | ||
+ | *A la hora de establecer este valor habría que tener en cuenta cuales son los tipos de ficheros más utilizados. | ||
+ | *Ejemplo si la mayoría son fotografías y programas | ||
+ | DefaultType application/octet-stream | ||
+ | *Si la mayoría son html | ||
+ | DefaultType text/html | ||
+ | *Si la mayoría es fichero de texto | ||
+ | DefaultType text/plain | ||
+ | <hr/> | ||
+ | |||
+ | ===<font color=green>HostNameLookups</font>=== | ||
+ | *Establece que se haga una consulta DNS por cada petición. No suele ser necesario y este uso sistemático relentiza el sistema. | ||
+ | HostNameLookups off | ||
+ | <hr/> | ||
+ | ===<font color=green>ErrorLog</font>=== | ||
+ | *Establece la ubicación de los ficheros donde se almacenan los errores que se producan | ||
+ | *Se puede ubicar en una partición diferente por si el error tiene que ver con el disco duro | ||
+ | * por defecto %ServerRoot%/log/error_log | ||
+ | ErrorLog logs/error_log | ||
+ | <hr/> | ||
+ | ===<font color=green>LogLevel</font>=== | ||
+ | *Establece el nivel de aviso/error que el sistema tiene que generar para que dicha circunstancia sea almacenada en el ficero ErrorLog | ||
+ | *Los niveles del sistema son los siguintes: | ||
+ | #debug | ||
+ | #info | ||
+ | #notice | ||
+ | #warn | ||
+ | #error | ||
+ | #crit | ||
+ | #alert | ||
+ | #emerg | ||
+ | *El nivel de urgencia es de menos urgente o peligroso a más | ||
+ | LogLevel warn | ||
+ | <hr/> | ||
+ | ===<font color=green>LogFormat</font>=== | ||
+ | *Establece la información y el formato de la misma que vamos a guardar cuando queremos registrar un evento el ErroLog | ||
+ | *Hay varias variables que podemos incluir | ||
+ | *Visita http://httpd.apache.org/docs/2.4/es/mod/mod_log_config.html#logformat para verlos | ||
+ | LogFormat "%h %l %u %t \"%r\" %>s %b" | ||
+ | %h host remoto | ||
+ | %l nombre del log remoto | ||
+ | %u usuario remoto | ||
+ | %t hora en la que ocurre el evento | ||
+ | %r salto de línea | ||
+ | %s Stado | ||
+ | %b bytes que ocupa la respuesta | ||
+ | <hr/> | ||
+ | ===<font color=green>CustonLog</font>=== | ||
+ | *Ubicación del fichero que almacena los accesos a nuestro servicio web | ||
+ | CustomLog logs/access_log conbined | ||
+ | *La opción '''''combined''''' indica que toda la información relacionada con los accesos sea almacenada en un único fichero | ||
+ | <hr/> | ||
+ | |||
+ | ===<font color=green>ServerSignature</font>=== | ||
+ | *Permite restringir o no cla información de nombre y versión del servidor, que se mostrará cuando el servidor genere alguna página automáticamente para mostrar al usuario | ||
+ | *No se refiere a páginas que se generen a partir de lenguajes de programación como php | ||
+ | ServerSignature On|Off|Email | ||
+ | *Por defecto se establece el valor '''''Off''''' | ||
+ | <hr/> | ||
+ | ===<font color=green>Alias</font>=== | ||
+ | *Permite establecer nombres alternativos o ''alias'' para archivos y directorios, con el objetivo de realizar referencias mas significativas | ||
+ | Alias /icons/ "/var/www/icons" | ||
+ | <hr/> | ||
+ | ===<font color=green>IndexOptions AddIconByEncoding AddIconByType AddIcon DefaultIcon ReadmeName</font>=== | ||
+ | *Este tipo de directivas están asociadas a la creación de índices de manera automática por el servidor. | ||
+ | <hr/> | ||
+ | ===<font color=green>HeaderName IndexIgnore</font>=== | ||
+ | |||
+ | <hr/> | ||
+ | ===<font color=green>AddEncoding</font>=== | ||
+ | *codificación para determinadas extensiones de archivos | ||
+ | *Especificar al browser que descomprima ficheros mientras los descarga | ||
+ | AddEncoding x-compress Z | ||
+ | AddEncoding x-gzip gz | ||
+ | *Esto hace que los ficheros que tienen la extesión '''''Z''''' y '''''gz''''' sean ficheros considerados de coficación x-compress y xgzip respectivamente. | ||
+ | |||
+ | <hr/> | ||
+ | ===<font color=green>LenguagePriority</font>=== | ||
+ | *Establece relacion entre extensiones e idiomas para el contenido | ||
+ | *Esto puede ser utilizado para que apache de forma transparente sirva la página en un idioma u otro tras una negociación entre el cliente y el servidor en función del idioma del navegador web del cliente. | ||
+ | *Ejemplos de algunos códigos de idiomas | ||
+ | |||
+ | da nl en et fr de el it ja pl kr pg np ptbr | ||
+ | Danes (da) Holandés (nl) Inglés (en) Estonio (et) Francés (fr) Alemán (de) Griego Moderno (el) | ||
+ | Italiano (it) Noruego (no) Koreano (kr) Portugés (pt) Luxemburgés (ltz) Español (es) Sueco (sv) | ||
+ | Checo (cz) Polaco (pl) Portugués de Brasil (pt-br) Japonés (ja) Ruso (ru) Croata (hr) | ||
+ | |||
+ | AddLanguages es .es | ||
+ | AddLanguages nl .nl | ||
+ | AddLanguages en .en | ||
+ | AddLanguages fr .fr | ||
+ | AddLanguages it .it | ||
+ | |||
+ | <hr/> | ||
+ | ===<font color=green>AddCharset</font>=== | ||
+ | *Permite añadir nuevos juetos de caracteres | ||
+ | AddCharset ISO-8859-1 .iso8859-1 .latin1 | ||
+ | AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen | ||
+ | |||
+ | <hr/> | ||
+ | ===<font color=green>AddDefaultCharset</font>=== | ||
+ | *Establece el conjunto de caracteres por defecto que mejor se adpata a la zona donse se ubica el servidor y el idioma con el que los contenidos son desarrollados | ||
+ | AddDefaultCharset ISO-8859-1 | ||
+ | <hr/> | ||
+ | ===<font color=green>BrowserMatch</font>=== | ||
+ | *Adapta la respuesta del servidor en función de la configuración del navegador del cliente y plugins | ||
+ | *Permite adaptarnos a circunstancias y evitar problemas con navegadores | ||
+ | *Valores usados por problemas conocidos | ||
+ | BrowserMatch "Mozilla/2" nokeepalive | ||
+ | BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 | ||
+ | BrowserMatch "RealPlayer 4\.0" force-response-1.0 | ||
+ | BrowserMatch "Java/1\.0" force-response-1.0 | ||
+ | BrowserMatch "JDK/1\.0" force-response-1.0 | ||
− | + | <hr/> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Última revisión de 21:44 24 ene 2013
Qué son las directivas
- Las directivas son variables predefinidas que utiliza el fichero/s de configuración de del servidor Apache
- Gracias a ellas podemos personalizar el comportamiento del servidor web
- Son muchas las directivas existentes, veremos algunas de ellas en el presente wiki
- Dentro del fichero de configuración el signo # indica un comentario (se ignora esa línea)
Cualquier cambio en la configuración del servidor tendrá efecto después de reniciarlo |
Referencias
- Fichero de configuracion comentado y con referencias a la web
- Referencias relacionadas con apache
- Directivas de apache. Lista completa en la página oficial
- Formas de uso de las directivas de la página oficial
- Terminos usados para describir el uso de directivas
Directivas
- Podemos ver las directivas habitadas con el comando apache2ctl o apachectl (puede variar en diferentes distribuciones.
- Este es un comando muy útil
-h para ver la ayuda -l lista los módulos compilados -M lista los módulos añadidos de forma estática -L lista las directivas de compilación disponibles con una explicación
Dispone de muchas utilidades (verison,
ServerRoot
- Corresponde al directorio donde se ha instalado el apache
- No se debería cambiar (Si se cambia el servidor no deja de funcionar)
- Posteriormente podemos hacer referencia a este directoria a través de la referencia %SeverRoot%
ServerRoot /var/
- Cuando se especifican rutas relativas siempre se tomarán respecto a la ubicación de ServerRoot
PidFile
- Ubicación del fichero donde el servidor guarda su ID de proceso
- Por defecto se ubica en %ServerRoot%/logs/httpd.pid
PidFile logs/httpd.pid
Timeout
- Tiempo en segundos en los que se esperan las respuestas en la comunicación
- Pasado este tiempo se entiende que la comunicación se ha cortado
- Por defecto se estable a valor de 300
Timeout 300
KeepAlive MaxKeepAliveRequest KeepAliveTimeout
- Permitir o no varias peticiones por conexión
KeepAlive off
- Establecerlo a on puede hacer que un cliente sature a un servidor.
- Si se establece a on es muy recomendado usar las siguientes directivas.
- MaxKeepAliveRequest para limitar el número de peticiones en cada conexión.
- KeepAliveTimeout establece el tiempo que el servidor espera antes de atender una nueva petición de la misma conexión.
ifModule
- Verifica la existencia de un determinado módulo
- En caso de que exista el módulo se establece un bloque de opciones
- Existe la posibilidad de establecer el bloque de opciones en caso de que no exista dicho módulo con la exclamación !
<ifModule nombre_modulo> Definiciones a tener en cuenta si está cargado el módulo nombre_modulo </ifModule> <!ifModule nombre_modulo> Definiciones a tener en cuenta si no está cargado el módulo nombre_modulo </ifModule>
StartServer MaxClient MaxRequestsPerChild
- Número de servidores que se crearán al arrancar el servicio
StartServer 5 #Abrimos 5 servidores al arrancar el servidor http Apache
- MaxClient clientes que el servidor puede atender de forma concurrente
- MaxRequestsPerChild establece el número máximo de peticiones que un proceso hijo puede atender.
- Despues de atender este número de peticiones el proceso es eliminado
- En caso de tener el valor 0 (valor por defecto) no se limita el número de peticiones que un proceso hijo puede atender
Port
- Puerto que abre el servidor web para atender las solicitudes
- Si no se especifica se asigna el puerto 80
#establecemos el puert 7900 en lugar del puerto 80 Port 7900
- PAra ver un listado de los puertos http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml
Listen
- Direcciones IP y puertos en los que escucha el servidor además de los puertos por defecto
#Listen [IP-address:]portnumber #Establecer el valor por defecto Listen 127.0.0.1:80
#Aquí establecemos que además del puerto 80, escuche también por el puerto 8080 Listen 8080
LoadModule
- Esta directiva permita cargar nuevos módulos como si se tratara de ensambar un nuevo componente sin tener que volver a compilar los fuentes
- Apache normalmente viene con la opcion DSO Dinamic Shared Object, por lo que podemos agregar nuevos módulos
- Los módulos con los que se compilaron los fuentes no hacen falta volver a cargarlos. Sólo sería para añadir nuevos módulos que queramos incorporar
User Group
- Estas directivas especifican el identificador de usuario, grupo con el que el servidor responderá a las peticiones. Es decir el usuario,grupo, propietario del proceso hijo que atiende las solicitudes del cliente
- Para usar esta directiva, el servidor debe haber sido iniciado como root.
- Si se inicia Apache con un usario distinto de root, no se podrá cambiar a un usuario con menores privilegios, y el servidor continuará ejecutándose con el usuario original.
- Si inicia el servidor como root, entonces es normal que el procedimiento padre siga ejecutándose como root.
- Un nombre de ususario, se refiere al usuario dado por su nombre.
- # seguido por un número de usuario.
- Se refiere al usuario que corresponde a ese número.
User nombre_usuario User #num_id_usuario Group nombre_usuario Group #num_id_usuario
ServerAdmin
ServerAdmin direccion_email|URL
- Permite especificar la dirección del administrador que se mostrará al cliente en caso de que se produzca un error
ServerName
- Especifica el nombre del servidor
ServerName nombre_basado_dominio[:port]
- Es recomendado utilizarlo, si no se utiliza se intentará deducirlo a partir de la ip y de una resolución inversa con el DNS
DocumentRoot
DocumentRoot directorio
- Valor por defecto: DocumentRoot /usr/local/apache/htdocs
- Especificamos el directorio raíz donde queremos colgar las páginas web
- Si dentro de este directorio creamos subdirectorios, podremos acceder a ellos y ver su contendido
- Una vez especificado el DocumentRoot, deberemos detallar su accesibilidad del directorio en la directiva Directory
DocumentRoot /www/myWebs/ .... <Directory "/www/myWebs"> ...
Directory
<Directory directory-path> ... #opciones de acceso y comportamiento </Directory>
- Configuramos el comportamiento y permisos de un directorio especificado
- Si nos se especifica de forma explícita dicho comportamiento será aplicado de forma recursiva a los subdirectorios
- Por defecto aparece en dos ocasiones una muy restrictiva para el directorio raiz y otra más permisiva para el directorio donde comparitimos los ficheros
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny form all </Directory> <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny form all </Directory>
- A continuación vemos las diferentes opciones utilizadas
Options
- Establece la opciones que va a tener el servidor al acceder a un directorio en concreto.
- Puede tomar uno de los siguientes valores
- None : No se activa ninguna de las caracteristicas adicionales
- All :Se activan todas las características expceto la de MultiView
- ExecCGI: permita la ejecución de script CGI usando mod_cgi
- FollowSymLinks: El servidor puede seguir enlaces simbólicos en ese directorio.
- SymLinksIfOwnerMatch: Solo seguirá enlaces simbólicos si el directorio de destino es del mismo usuario que el enlace.
- Includes: Permite server-side includes.Esto es permiten a un fichero HTML incluir otros ficheros.
- IncludesNOEXEC: En este caso deshabilita el # exec cmd y # exec cgi.
- Indixes: Muestra una lista formateada del contenido de los directorios, si no existe el DirectoryIndex (como el index.html) en el directorio solicitado. Por razones de seguridad, esto no debería establecerse, y desde luego no en el directorio indicado por DocumentRoot.Esta opción debe de estar habilitada con cuidado (y sólo para ciertos directorios) sólo si esta seguro de querer que los usuarios vean todo el contenido del directorio.
- MultiViews Soporte para vistas múltiples negociadas por contenido; esta opción está desactivada de forma predeterminada por motivos de seguridad.
AllowOverride
AllowOverride All|None|tipo_directorio [tupo_directorio] ...
- Especifica el tipo de directorios que pueden ser incluidos en el fichero .htaccess.
- El valor de tipo_directorio puede tener uno de los siguientes valores
- None Ignora el fichero .htaccess
- AuthConf Permite usar directivas de autorización (AuthName, AuthType, ...)
- FileInf Se pueden usar directivas que controlan el tipo de documentos SetInputFilter, SetOutputFilter, )
- Indexes para gestionar el listado de ficheros y directorios
- Limit establecer directivas que controlan el acceso (Allow, deny y order)
- Options=[Option,..-] Permitir el uso de directivas que controlan funciones específicas del directorio.
Order
Order lista_permisos
- Controla el orden en el cual se aplicarán los permisos a un directorio
- Lista_permisos puede tener los siguientes valores
- Allow,Deny: Primero se evalúan todas las directivas Allow , y acontinuación son evaluadas las directivas 'Deny. Si la solicitud no coindice con ninguna premisa establecida, por defecto es rechazado
- Deny,Allow: Se realiza las evaluaciones en orden inverso
- Veamos un ejemplo
- En la siguiente especiviación todos los host del dominio enlaces.es tienen acceso, rechando cualquier acceso de cualquier otra ubicación de solicitud.
Order Deny,Allow Deny from all Allow from enlaces.es
Deny
UserDir
- Indica si se debe permitir que cada usuario de nuestro sistema tenga su porpia carpeta personal en el servidor web, estableciendo cual será la ruta desde el servidor para acceder a dicha carpeta.
- Activando esta opción, se puede conseguir que cada uno tenga su propia web personal.
- Una opción frecuente sería
UserDir public_html
- Con esta opción se crearía en nuestro servidor rutas para cada usuario.
- Por ejemplo usuarios Luis, Maria , Sonia, establecería las rutas
www.enlaces.es/~Luis www.enlaces.es/~Maria www.enlaces.es/~Sonia
- Por otro lado cada usuario tendría en su home un subdirectorio public_html para publicar ahí las páginas web
- Si queremos deshabilitarlo (opción por defecto)
UserDir disable
- Por seguridad no deberíamos permitir acceso a ninguna carpeta del home de root
Userdir disabled root
DirectoryIndex
DirectoryIndex disabled |fichero [fichero]...
- Establece el nombre del fichero que apache servira cuando se le realice una solicitud al directorio raiz del servidor (especificado en DocumentRoot)
- En caso de no encontrarse ningún fichero Apache servira una lista de los fichero disponibles en ese directorio (opción Indexes del directorio DocumentRoot)
- Se puede especificar una lista separada por espacios de fichero y el servidor servirá el primer fichero que localice en el directorio
DirectoryIndes index.html index.htm index.php
AccessFileName
AccessFileName nombreFichero [nombreFichero] ...
- Especifica el nombre del fichero en el que se especificarán las directiva de acceso para cada directorio. Esta es una alternativa a especificar de forma explícita dichos directivas en el fichero de configuración
Valor por defecto: AccessFileName .htaccess
Files
- Es una directiva para determinar accesos a ficheros.
- Se pueden especificar expresiones regulares en cuyo caso usarempos <FileMatch> o bien poniendo ~ despues de files
<Files ~ "\.(gif|jpe?g|png)$"> <FileMatch <"^\.ht> Order allow,deny Deny from all Satisfy all </FileMatch>
UseCanonicalName
UseCanonicalName on
- Indica a apache que cada vez que tengamos que contruir direcciones que le hagan referencia, lo haga con el nombre canónico (Establecido en ServerName) y el puerto y no use el hostname
TypesConfig
Detalla la ubicación del fichero que contiene la descripción de los tipos MIME. Este fichero mime.types suele estar en el directorio /conf
TypesConfig /conf/mime.types
DefaultType
- Establece el tipo mime por defecto.
- Este tipo será asignado a todos aquellos ficheros a los cuales no se les pueda asignar tipo según la descripción detallada en el fichero mime.types
- A la hora de establecer este valor habría que tener en cuenta cuales son los tipos de ficheros más utilizados.
- Ejemplo si la mayoría son fotografías y programas
DefaultType application/octet-stream
- Si la mayoría son html
DefaultType text/html
- Si la mayoría es fichero de texto
DefaultType text/plain
HostNameLookups
- Establece que se haga una consulta DNS por cada petición. No suele ser necesario y este uso sistemático relentiza el sistema.
HostNameLookups off
ErrorLog
- Establece la ubicación de los ficheros donde se almacenan los errores que se producan
- Se puede ubicar en una partición diferente por si el error tiene que ver con el disco duro
- por defecto %ServerRoot%/log/error_log
ErrorLog logs/error_log
LogLevel
- Establece el nivel de aviso/error que el sistema tiene que generar para que dicha circunstancia sea almacenada en el ficero ErrorLog
- Los niveles del sistema son los siguintes:
- debug
- info
- notice
- warn
- error
- crit
- alert
- emerg
- El nivel de urgencia es de menos urgente o peligroso a más
LogLevel warn
LogFormat
- Establece la información y el formato de la misma que vamos a guardar cuando queremos registrar un evento el ErroLog
- Hay varias variables que podemos incluir
- Visita http://httpd.apache.org/docs/2.4/es/mod/mod_log_config.html#logformat para verlos
LogFormat "%h %l %u %t \"%r\" %>s %b"
%h host remoto %l nombre del log remoto %u usuario remoto %t hora en la que ocurre el evento %r salto de línea %s Stado %b bytes que ocupa la respuesta
CustonLog
- Ubicación del fichero que almacena los accesos a nuestro servicio web
CustomLog logs/access_log conbined
- La opción combined indica que toda la información relacionada con los accesos sea almacenada en un único fichero
ServerSignature
- Permite restringir o no cla información de nombre y versión del servidor, que se mostrará cuando el servidor genere alguna página automáticamente para mostrar al usuario
- No se refiere a páginas que se generen a partir de lenguajes de programación como php
ServerSignature On|Off|Email
- Por defecto se establece el valor Off
Alias
- Permite establecer nombres alternativos o alias para archivos y directorios, con el objetivo de realizar referencias mas significativas
Alias /icons/ "/var/www/icons"
IndexOptions AddIconByEncoding AddIconByType AddIcon DefaultIcon ReadmeName
- Este tipo de directivas están asociadas a la creación de índices de manera automática por el servidor.
HeaderName IndexIgnore
AddEncoding
- codificación para determinadas extensiones de archivos
- Especificar al browser que descomprima ficheros mientras los descarga
AddEncoding x-compress Z AddEncoding x-gzip gz
- Esto hace que los ficheros que tienen la extesión Z y gz sean ficheros considerados de coficación x-compress y xgzip respectivamente.
LenguagePriority
- Establece relacion entre extensiones e idiomas para el contenido
- Esto puede ser utilizado para que apache de forma transparente sirva la página en un idioma u otro tras una negociación entre el cliente y el servidor en función del idioma del navegador web del cliente.
- Ejemplos de algunos códigos de idiomas
da nl en et fr de el it ja pl kr pg np ptbr Danes (da) Holandés (nl) Inglés (en) Estonio (et) Francés (fr) Alemán (de) Griego Moderno (el) Italiano (it) Noruego (no) Koreano (kr) Portugés (pt) Luxemburgés (ltz) Español (es) Sueco (sv) Checo (cz) Polaco (pl) Portugués de Brasil (pt-br) Japonés (ja) Ruso (ru) Croata (hr)
AddLanguages es .es AddLanguages nl .nl AddLanguages en .en AddLanguages fr .fr AddLanguages it .it
AddCharset
- Permite añadir nuevos juetos de caracteres
AddCharset ISO-8859-1 .iso8859-1 .latin1 AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddDefaultCharset
- Establece el conjunto de caracteres por defecto que mejor se adpata a la zona donse se ubica el servidor y el idioma con el que los contenidos son desarrollados
AddDefaultCharset ISO-8859-1
BrowserMatch
- Adapta la respuesta del servidor en función de la configuración del navegador del cliente y plugins
- Permite adaptarnos a circunstancias y evitar problemas con navegadores
- Valores usados por problemas conocidos
BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0