Web Servers

PAW 2020 - UNLu

Introducción

Elemento pasivo del modelo cliente / servidor

Recibir peticiones, procesarlas, generar respuestas (protocolo HTTP)

URL como identificador de recurso (o ubicación)

URLs

(*) scheme: http:// https://

(*) host: Dominio o IP (DNS o Resolver)

     port: TCP (WKP: 80)

(*) Obligatorios

(*) path: Puede indicar ubicación o no

     url-params: no se usa

     query string: pares clave valor, separados por &

     anchor: no llega al server

Tambien pueden incluir user y password pero tampoco se usan en la web

http://user:pass@domain.com

Dominios

IP + Puerto: Bind del proceso

1 Web server puede manejar diversas IP + Puerto

Como se manejan los dominios?

IP <-> DNS <-> Puerto

 

Localmente:

Archivo /etc/hosts (Linux y MAC)

Archivo C:\Windows\system32\drivers\etc\hosts (Win)

PRUEBA

Path

Dominio+Port: Identificar el servidor

 

Path: Identificar el recurso dentro del servidor

 

Tipos de recursos:

  • Contenido Estático
  • Contenido Dinámico
    • Handlers
      • CGI
    • módulos de terceros (php)

Configuración

La configuración por default permite trabajar en modo desarrollo

Configuración

2 directorios: *-enabled y *-available

Configuración

La configuración del web server se hace a través de archivos de texto, mediante el uso de directivas.

 

Se puede gestionar completa en un único archivo, pero suele dividirse en pequeños archivos por comodidad

 

Apache ofrece directivas de inclusión para realizar esta composición

# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

Configuración: Scope

El scope o ámbito nos permite aplicar directivas de forma particular en base a criterios

 

Existen diversos Scopes: <Directory>, <DirectoryMatch>, <Files>, <FilesMatch>, <Location>, <LocationMatch>, <VirtualHost>

# From apache2 conf
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

AccessFileName .htaccess

<FilesMatch "^\.ht">
        Require all denied
</FilesMatch>

Virtualhosts

Es la practica de tener multiples sitios en un mismo equipo servidor. Pueden ser basados en IP o basados en Nombre.

<VirtualHost 10.1.2.3:80>
  ServerAdmin webmaster@host.example.com
  DocumentRoot "/www/docs/host.example.com"
  ServerName host.example.com
  ErrorLog "logs/host.example.com-error_log"
  TransferLog "logs/host.example.com-access_log"
</VirtualHost>

Basados en IP: Sirve el sitio en función de la config IP:Port

Basados en nombre: Sirve el sitio en función de la directiva ServerName (Tiene que ser igual al valor del header Host de HTTP)

Ejemplo

dev.dominio.com

prod.dominio.com

- Generar archivos de configuracion

- Generar directorios con diferente contenido

- Permisos

- Editar /etc/hosts (simular alta en DNS)

- Reiniciar Servidor

- Probar

Virtualhost ejemplo

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName dominio.com
        DocumentRoot /home/data/workspace/paw/dominio.com

        <Directory /home/data/workspace/paw/dominio.com>
                Options FollowSymLinks
                AllowOverride All
                Require all granted
                # DirectoryIndex app.php
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error-dominio.com.log
        CustomLog ${APACHE_LOG_DIR}/access-dominio.com.log combined
</VirtualHost>

Referencias

Backend 6 - Apache y Web Servers

By Tomas Delvechio

Backend 6 - Apache y Web Servers

An introduction of Apache Web Server and Server Technologies

  • 653