Original in fr Charles vidal fr to es Alejandro Ramírez, Walter Echarri
Apache es el nombre de un proyecto
de servidor WEB libre. El nombre apache tiene un origen un poco discutido,
algunos disen que viene de "a patchy server" debido a numerosos
patchs del principio (otro truco de Hacker :), otros dicen de una manera
más seria que los instigadores de este proyecto tomaron el nombre
en memoria de los Apaches por su gran adaptabilidad al terreno.
Este servidor es el más utilizado en internet. Respeta el protocolo
HTTP (1.1) normalizado por el W3C (WWW
Consortium).
Según los estudios
de netcraft de Junio de 1999, apache es utilizado en en
56.19 % de los servidores.
Un servidor WEB es el programa "server" que responde a las peticiones
de los clientes web, como por ejemplo un browser WEB, lynx :).
telnet www.linuxfocus.org 80 Trying 195.53.25.18... Connected to nova.linuxfocus.org. Escape character is '^]'. GET / HTTP/1.0 <return> <return> HTTP/1.1 200 OK Date: Mon, 27 Sep 1999 21:23:20 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Last-Modified: Sun, 26 Sep 1999 16:40:44 GMT ETag: "4b005-1616-37ee4c8c" Accept-Ranges: bytes Content-Length: 5654 Connection: close Content-Type: text/html <PAGE HTML> |
Analizemos el resultado :
Primero que nada, la primera linea indica el protocolo utilizado para
la respuesta, después el código retornado por el servidor
(los códigos superiores a 400 indican un error). Después
la fecha, el tipo de servidor, la fecha de la última modificación
(esto permite al cliente web saber si lo que hay en su cache es valido
o no). Content-Length indica el tamaño del documento enviado (No
hay Content-Length para los scripts CGI), el Content-Type da a su cliente
WEB el type MIME de lo que es enviado (texto, html, imágenes ...)
No he descrito todo ya que ciertas cosas me son desconocidas. :)
Veamos ahora el caso de un error...
telnet www.linuxfocus.org 80 Trying 195.53.25.18... Connected to nova.linuxfocus.org. Escape character is '^]'. get / HTTP/1.0 <return> <return> HTTP/1.1 501 Method Not Implemented Date: Mon, 27 Sep 1999 21:22:03 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Allow: GET, HEAD, OPTIONS, TRACE Connection: close Content-Type: text/html |
Como ustedes lo pueden ver, el encabezado de la respuesta habla de si
misma.
El protocolo HTTP es muy simple, como veremos en pequeños ejemplos
:
telnet www.linuxfocus.org 80 Trying 195.53.25.18... Connected to nova.linuxfocus.org. Escape character is '^]'. GET / < return > < return > |
Con el comando telnet nos hemos conectado con la máquina
www.linuxfocus.org (dirección IP 195.53.25.1) a través
del puerto 80, el habitual para este protocolo.
El servidor del otro lado está en espera de
una petición. Usted escribió GET / y dos veces retorno de
carro (enter).
Porqué los dos retornos de carro ?, bueno esto indica
el final de su petición (usted envió una linea vacia). El
servidor entonces le responde enviandole el documento solicitado ( index.html
).
Al final de la transferencia, la se cierra la conexión. Como usted puede constatar, el lenguaje entre el browser web y el servidor es muy simple. Pero atención, esto se complica con las versiones de HTTP :
GET / HTTP/1.0< return > < return > HTTP/1.1 200 OK Date: Tue, 24 Aug 1999 22:25:11 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Last-Modified: Sun, 01 Aug 1999 11:50:52 GMT ETag: "4b005-1462-37a4349c" Accept-Ranges: bytes Content-Length: 5218 Connection: close Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> ....y finalmente si hacemos :
HTTP/1.1 400 Bad Request Date: Tue, 24 Aug 1999 22:24:59 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Connection: close Transfer-Encoding: chunked Content-Type: text/html GET / HTTP/1.1 <return > < return > 12e <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>400 Bad Request</TITLE> </HEADBODY> <H1>Bad Request</H1> Your browser sent a request that this server could not understand.<P> client sent HTTP/1.1 request without hostname (see RFC2068 section 9, and 14.23): </P> </BODY></HTML>Efectivamente con el nuevo protocolo HTTP/1.1 la petición necesita más información. La petición debe comprender varias lineas. Este añadido permite transmitir al servidor más información para mejores intercambios.
Este protocolo esta en la versión 1.1, y la gente de apache ha respetado al pie de la letra las especificaciones. El nuevo protocolo ofrece un gran número de nuevas funciones como autentificación del sitio virtual (varios sitios pueden tener una sola dirección IP. Ver nslookup). Ejemplo :
GET / HTTP/1.0< return > Host:www.linuxfocus.org< return > < return > [...]Como la mayor parte de programas clientes servidores, el servidor cuando recibe una petición,
Efectivamente, el cliente WEB le envía su petición, y el servidor le regresa las páginas html correspondientes a la URL solicitada. El cliente solicitará las imágenes que se encuentran dentro de ellas y el servidor las enviará igualmente. Pero él puede, siguiendo la petición, hacer la interface con algunos programas del sistema, elejidos o escritos por el administrador del sitio (llamado WebMaster); estos programas son llamados scripts CGI ( Common gateway interface ) y regresan una página html. Veremos en la siguiente, que podemos añadir nuevas funciones al servidor WEB mediante la técnica de módulos. Ok! las funcionalidades de base del servidor HTTPD han sido presentadas.
Veremos en los próximos articulos la configuración, los módulos de apache (con los hosts virtuales, ciertos módulos que permiten más dinamismo en sus páginas HTML ( php, perl etc ... ), el módulo SSL ( Secure Socket Layer ), y por terminar la compilación de Apache.