Jugando con Apache 2
Comprensión básica de la configuración de Apache. Este envío se basa la lectura rápida de documentación en la web, ensayo y error y deducciones un tanto a la ligera de los resultados obtenidos. No se fie.
Apache soporta servidores virtuales, que es como decir que una sóla máquina da la impresión ser varios servidores web. La mayor implicación de ello es que cada servidor virtual tendrá su propia configuración y comportamiento independiente del resto.
No sé muy bien como va, pero desde luego mi servidor Apache que por el momento sólo neceisto que haga de un solo servidor viene configurado con servidores virtuales. Claro que sólo tengo un servidor virtual, así que en la práctica es como si tuviese un sólo servidor web sin virtualizar.
Después de este aparente juego de palabras, pasamos a cosas más interesantes.
La configuración se situa, normalmente, en /etc/apache2. Cuando digo configuración no me refiero a un fichero, sino a toda la configuración del servidor que no se reduce a un solo archivo. En todo caso se debe comprobar la directiva ServerRoot que indica a Apache a partir de que directorio debe de entender que se situa toda la configuración.
Existe un fichero de configuración general, pese a que en todas las páginas aparece httpd.conf en mi caso es apache2.conf. ¿Serán cosas de Debian?
Aparte, por cada servidor virtual existe otro fichero de configuración. Supongo que podrá no existir y se tomarán los valores del fichero general. De hecho Apache define una jerarquia de configuraciones, de manera que se pueda decidir que valor se aplica cuando hay configuraciones cotnrarias. Temo que no puedo explicar cuál es esa jerarqui por temor a equivocarme.
En el directorio de configuración (ServerRoot) hay dos directorios, sites-enabled y sites-available. Parece ser que sites-available contiene la configuración de cada servidor virtual en un fichero lamado default (lo cuál me hace pensar que probablemente pueda haber más ficheros de configuración en ese directorio, o más configuraciones alternativas o vaya usted a saber que festival de configuraciones, ficheros y bytes revenidos podría uno encontrar allí), pero es en sites-enabled desde dónde están enalzadas. Por ejemplo, mi servidor está así:
Así, si queremos tocar la configuración de un servidor virtual, o como en mi caso, del único servidor virtual (que es como decir del único servidor) hay que tocar la configuración bajo sites-available. Parecerá tonto, pero ya estuve bastante tiempo haciendo el canelo editando el fichero de configuración general y viendo resultados rarísimos. Lógico, sólo conseguía cambiar las opciones que no estaban definidas en la configuración particular del servidor virtual.
Una vez no situamos en el fichero de configuración adecuado podemos centrarnos en las directivas. Como ya dije, las directivas establecen la configuración del servidor. Algunas se refieren al servidor en general y otras son una manera de agrupar directivas para un conjunto de elementos. Sin asustarse; los elementos pueden ser ficheros que respondan a un patrón en el nombre, o directorios, o ficheros que cuelgan en un directorio (a grandes rasgos).
Y llegamos a dónde quería llegar yo cuando investigué todo esto. Como evitar que Apache liste el contenido de los directorios a los visitantes. Es decir, que si la URL a mi servidor es un directorio no muestre los contenidos como venía haciendo hasta hoy. Pues basta con poner en la directiva Directory del directorio correspondiente (en el padre si quiero aplicarlo a todos) lo siguiente:
Cabe decir que Apache sólo mostaría el contenido del directorio si se indica una URL a un directorio de mi servidor y en dicho directorio Apache no encuentra ninguno de los archivos mencionados en la directiva DirectoryIndex, directiva que le indica a Apache que ficheros mostrar por defecto cuando se le indica una URL que es un directorio.
En fin, ahí quedan unos enlaces:
Apache soporta servidores virtuales, que es como decir que una sóla máquina da la impresión ser varios servidores web. La mayor implicación de ello es que cada servidor virtual tendrá su propia configuración y comportamiento independiente del resto.
No sé muy bien como va, pero desde luego mi servidor Apache que por el momento sólo neceisto que haga de un solo servidor viene configurado con servidores virtuales. Claro que sólo tengo un servidor virtual, así que en la práctica es como si tuviese un sólo servidor web sin virtualizar.
Después de este aparente juego de palabras, pasamos a cosas más interesantes.
La configuración se situa, normalmente, en /etc/apache2. Cuando digo configuración no me refiero a un fichero, sino a toda la configuración del servidor que no se reduce a un solo archivo. En todo caso se debe comprobar la directiva ServerRoot que indica a Apache a partir de que directorio debe de entender que se situa toda la configuración.
Existe un fichero de configuración general, pese a que en todas las páginas aparece httpd.conf en mi caso es apache2.conf. ¿Serán cosas de Debian?
Aparte, por cada servidor virtual existe otro fichero de configuración. Supongo que podrá no existir y se tomarán los valores del fichero general. De hecho Apache define una jerarquia de configuraciones, de manera que se pueda decidir que valor se aplica cuando hay configuraciones cotnrarias. Temo que no puedo explicar cuál es esa jerarqui por temor a equivocarme.
En el directorio de configuración (ServerRoot) hay dos directorios, sites-enabled y sites-available. Parece ser que sites-available contiene la configuración de cada servidor virtual en un fichero lamado default (lo cuál me hace pensar que probablemente pueda haber más ficheros de configuración en ese directorio, o más configuraciones alternativas o vaya usted a saber que festival de configuraciones, ficheros y bytes revenidos podría uno encontrar allí), pero es en sites-enabled desde dónde están enalzadas. Por ejemplo, mi servidor está así:
#ll sites-available/Por lo cuál deduzco que en sites-enabled deberá haber un enlace simbólico a sites-available para activar dicho servidor. Los nombres lo dicen; sites-available son los servidores disponibles, que pueden usarse; sites-enabled son los servidores activos.
total 4
-rw-r--r-- 1 root root 1153 2006-07-26 00:08 default
# ll sites-enabled/
total 0
lrwxrwxrwx 1 root root 36 2005-05-25 05:56 000-default -> /etc/apache2/sites-available/default
Así, si queremos tocar la configuración de un servidor virtual, o como en mi caso, del único servidor virtual (que es como decir del único servidor) hay que tocar la configuración bajo sites-available. Parecerá tonto, pero ya estuve bastante tiempo haciendo el canelo editando el fichero de configuración general y viendo resultados rarísimos. Lógico, sólo conseguía cambiar las opciones que no estaban definidas en la configuración particular del servidor virtual.
Una vez no situamos en el fichero de configuración adecuado podemos centrarnos en las directivas. Como ya dije, las directivas establecen la configuración del servidor. Algunas se refieren al servidor en general y otras son una manera de agrupar directivas para un conjunto de elementos. Sin asustarse; los elementos pueden ser ficheros que respondan a un patrón en el nombre, o directorios, o ficheros que cuelgan en un directorio (a grandes rasgos).
Y llegamos a dónde quería llegar yo cuando investigué todo esto. Como evitar que Apache liste el contenido de los directorios a los visitantes. Es decir, que si la URL a mi servidor es un directorio no muestre los contenidos como venía haciendo hasta hoy. Pues basta con poner en la directiva Directory del directorio correspondiente (en el padre si quiero aplicarlo a todos) lo siguiente:
Options -IndexesQue obviamente indica como opción no (-) indexar el contenido de los directorios (Indexes).
Cabe decir que Apache sólo mostaría el contenido del directorio si se indica una URL a un directorio de mi servidor y en dicho directorio Apache no encuentra ninguno de los archivos mencionados en la directiva DirectoryIndex, directiva que le indica a Apache que ficheros mostrar por defecto cuando se le indica una URL que es un directorio.
En fin, ahí quedan unos enlaces:
- Documentación oficial de Apache 2.
- Descripción de las directivas principales.
- Breve descripción de opciones principales de un manual de SUSE (habrá mejores pero yo he llegado aquí).
0 Comments:
Publicar un comentario
<< Home