SlideShare a Scribd company logo
WEB SERVER APACHE
PARTE 1



                    1
Premessa
• Il Web è basato su un'architettura client-server
• Un processo particolare (Web server) si occupa di
  processare le richieste di risorse Web
• Le richieste sono veicolate attraverso il protocollo
  HTTP (Hyper Text Transfer Protocol)
• Ci sono modi diversi di implementare un Web server
• Ci sono diversi Web server




                                                         2
Tre modalità di gestione richieste HTTP
                                                     Piattaforma
                                                     client

                                         Browser
                      Richiesta                                 Richiesta
                      http                                         http                        Risposta
                    (1)                 Richiesta Risposta              (i)                    http
                          Risposta      http
                          http                    http

       Processo                           (a)     (c)                          processo
       server       (4)                                                        listener-dispatcher
                                  (b)
   (2) fork                               thread 1                                        (ii)  (iv)
                                             thread 2
                                                                                       helper 1
 Processo                                        thread 3
                                                                              (iii)       helper 2
 figlio                                              thread 4
                                                                                              helper 3



      Metodo fork                    Metodo multithread                               Metodo helper
                                       (aka worker)                                   (aka prefork)
            (3)

                                                        Piattaforma                       Apache 1.3.x
                                                        server                            Apache 2.x
                                                                                                          3
Due parole su sicurezza e prestazioni
               Processo

               Thread

                  molti processi   molti processi
un processo        più thread       un thread
molti thread      per processo     per processo




                                                    4
Overview di Apache




                     5
Apache: A patchy server

1994: public domain HTTP daemon (NCSA)
sviluppato da Rob McCool
al National Center for
Supercomputing Applications,
University of Illinois, Urbana-Champaign
                                           Necessità di modifiche (patches)
                                                     Brian Behlendorf
                                                     Roy T. Fielding
  Feb. 1995: un gruppo di
                                                     Rob Hartill
  Webmaster                                          David Robinson
  si coordinano creando                              Cliff Skolnick

  l’Apache Group                                     Randy Terbush
                                                     Robert S. Thau
                                                     Andrew Wilson
                                                     with additional contributions
                                                     Eric Hagberg Frank Peters Nicolas Pioch




                                                                                               6
Software per server Web




                                                                             <-WTH!!!




        Fonte:                                                              GoDaddy.com
        Netcraft Web Server Survey (http://www.netcraft.com/)
Server Web più diffusi: Apache, …, Microsoft Internet Information Server,
altri (GWS, SunONE, Zeus, iPlanet Web Server, …)
 Sistemi e Servizi di Rete - LS 2004/2005 – Server Web                                    7
Caratteristiche di Apache
•   Free ed Open source
•   Portabile (Unix, Win32, OS/2, BeOS, ...)
•   Efficiente
•   Supporta HTTP/1.1
•   Stabile e sicuro
•   Modulare
•   Supporta feature avanzate
     – Autenticazione
     – Personalizzazione log
     – Negoziazione contenuti
     – Virtual hosts
                                               8
Versioni di Apache




                     9
Apache 1.3
• Versione storica di enorme successo
• Ancora supportata
• Caratteristiche salienti:
   – Approccio prefork per il servizio concorrente delle
     richieste
   – File di configurazione altamente configurabile
   – Supporto per HTTP/1.1, Virtual host, ...
• Limiti principali
   – Approccio prefork può limitare le prestazioni
   – Scarsa portabilità fuori da contesti Unix (necessita
     system call Unix)

                                                            10
Apache 2.0
• Major rewriting del codice
• Modifiche architetturali fondamentali
  – Concetto di MPM (Multi Process Model)
• Benefici:
  – Migliore portabilità su piattaforme non Unix
  – Maggiori prestazioni e incremento della flessibilità




                                                           11
MPM In Apache
• MPM=Multi Process Model
• Modelli thread “nativi”
  – beos
  – mpm_os2
  – mpm_winnt
• Modelli “unix-oriented”
  – prefork (come apache 1.3, massima stabilità)
  – worker (usa thread, massime prestazioni)




                                                   12
Apache 2.2
• Apache 2.2 è una minor version
  – Le modifiche non sono a livello architetturale
• Riorganizzazione del file di configurazione
  – Molte distribuzioni linux introducevano un layout alternativo
    anche con apache 2.0 (es. Debian)
• Riorganizzazione dei moduli
  – Alcuni moduli sono stati rinominati
  – Alcuni moduli “sperimentali” ora sono standard
  – Alcuni moduli sono stati riscritti e suddivisi
  – Nuovi moduli/nuovi MPM
• Nuova API unificata per l'accesso ai DB
• Migliorie generali
  – Supporto per file > 2GB                                       13
Nuovo file di configurazione
• Si passa da un file monolitico (httpd.conf) in una
  gerarchia di file articolata
   – I virtual hosts vengono configurati in un file separato
   – Le configurazioni sui moduli sono separate dal file
     centrale
• Obiettivi: Manutenzione più semplice
   – Maggiore gestibilità delle configurazioni (es. se
     abbiamo molti virtual hosts)
   – Semplifica l'automazione della gestione del file di
     configurazione



                                                               14
Riorganizzazione dei moduli
• Moduli rinominati:
  – mod_imap → mod_imagemap
  – mod_access → mod_authz_host
  – mod_auth_ldap
• Moduli sperimentali divenuti stabili
  – mod_cache e altri moduli simili (da usare con attenzione)
  – mod_dumpio (dump all I/O)
• Moduli spezzati in sottoparti:
  – mod_auth viene suddiviso in molti sottomoduli
  – mod_proxy è esteso e spezzato in varie parti
• New entries:
  – mod_dbd, mpm_event
                                                                15
Nuova API per accesso a DB
• Implementata mediante mod_dbd
• La nuova API offre un layer di connettività a DBMS
  usabile da altri moduli
   – Semplifica e toglie codice ridondante nei moduli
   – Il modulo è sicuro, poiché tratta ogni untrusted input
     come user data. Il problema è come viene utilizzato
     da moduli terzi.
     Per evitare SQL Injection meglio filtrare i dati in input
       $untrusted =~ /([a-z]+)/; ← Teniamo i caratteri a-z
       $trusted = $1;




                                                                 16
Installare Apache




                    17
Per gli impazienti
• download dei sorgenti da httpd.apache.org
    – i sorgenti sono disponibili anche sul sito del corso
• Noi facciamo riferimento alla versione 2.2 di apache
$ tar -xzvf httpd-<versione>.tar.gz
$ cd httpd-<versione>
$ ./configure --prefix=</destination/path>
$ make
$ make install




                                                             18
Principali opzioni di configurazione
• Opzioni da passare allo script configure
   – --prefix=<prefix>
   – --with-mpm={beos|worker|prefork|mpm_os2}
   – --enable-modules={...}
• Prefix è la directory dove verrà installato Apache
• MPM indica quale sistema MPM dovrà essere usato
  per gestire le richieste concorrenti
• Enable modules indica quali moduli dovranno essere
  abilitati (il default contiene I moduli più comunemente
  utilizati)


                                                            19
Dopo aver installato apache
                Albero di directory:

                               <prefix>




bin      conf         htdocs      cgi­bin   logs




                                                   20
Eseguibili di Apache


                           <prefix>




bin


  httpd   apachectl   ab          htpasswd
                                             21
Eseguibili di apache
• httpd: binario del server apache
• ab: apache benchmark, strumento per misurare le
  prestazioni del Web server
   – ab -c <parallelismo> -n <# richieste> <URL>
• apachectl: script per lanciare, fermare e controllare il
  demone
   – apachectl start
   – apachectl stop
   – apachectl restart
• htpasswd: serve per generare e modificare file di
  autenticazione di apache
   – htpasswd [-c] <file.passwd> <username>
                                                             22
Configurare Apache




                     23
File di configurazione


                                 <prefix>




         conf


extras


            httpd.conf   magic    mime.types
                                               24
File di configurazione
• File conf/httpd.conf
• 2 sezioni
   – impostazioni globali
   – impostazioni del server di default
• Presenza di file aggiuntivi nella directory extras
   – Ogni aspetto specifico della configurazione non
     richiede di modificare il file principale
   – Configurazione alcune impostazioni di default
   – Configurazioni specifiche per moduli (es. SSL)
   – Configurazione MPM
   – Configurazione del virtual hosting
                                                       25
Impostazioni globali
• ServerRoot
   – top level directory per altri file di configurazione
• PidFile (facoltativo)
   – usato da apachectl per riconoscere httpd
• Timeout (facoltativo)
• Parametri per connessioni persistenti (facoltativi)
   – Keepalive (abilita o meno connessioni persistenti)
   – MaxKeepAliveRequests (dopo un certo numero di
     richieste forza la chiusura della connessione)
   – KeepAliveTimeout (dopo un certo tempo forza la
     chiusura della connessione)

                                                            26
Impostazioni globali
• Listen
   – porta su cui ascolta il server
   – valori tipici: 80 o 8080 per server “non di sistema”
• Nel nostro caso dovremo usare 8080... Perchè?
• LoadModule
   – Carica moduli esterni che estendono le funzioni di
     Apache (e.g., php)
• User, Group
   – Utente non privilegiato usato da Apache
   – Per motivi di sicurezza si abbandonano il prima
     possibile i privilegi da superutente

                                                            27
Impostazioni del server di default
•   ServerName (nome dell'host che ospita il server)
•   DocumentRoot (directory htdocs)
•   <Directory></Directory> (contenitore di settings)
•   <Location><Location> (contenitore di settings)
     – Options
        Indexes (crea automaticamente indici)
        Includes (Abilita ServerSide Includes)
        FollowSymlinks, SymlinksIfOwnerMatch (Sicurezza symlink)
        ExecCGI (abilita esecuzione di codice)
        ...




                                                                    28
Configurazioni del Server di default
• Ancora dentro Directory o Location
  – AllowOverride (uso di files .htaccess per cambiare
    impostazioni)
  – Allow, Deny (Access Control List su IP)
• Esempi
<Directory />              <Directory /[....]/htdocs>
  Options FollowSymLinks     Options FollowSymLinks
  AllowOverride None         AllowOverride None
  Order deny,allow           Order allow,deny
  Deny from all              Allow from all
</Directory>               </Directory>



                                                         29
Configurazioni del Server di default
• Ancora dentro Directory o Location
  – AllowOverride (uso di files .htaccess per cambiare
    impostazioni)
  – Allow, Deny (Access Control List su IP)
• Direttive per il logging
  – ErrorLog (messaggi di errore)
  – CustomLog (messaggi sulle richieste)




                                                         30
File con configurazioni extra
• Direttiva include
   – Include conf/extra/httpd-mpm.conf
   – Include conf/extra/httpd-vhosts.conf
   – Include conf/extra/httpd-userdir.conf
• Il contenuto dei file inclusi è trattato esattamente
  come se fosse nel file principale
• Esempio:
   – Configurazione della user directory:
   – UserDir (diectory http://www.sito.it/~nomeUtente/)



                                                          31
Impostazioni MPM
• Dipendono da modello prescelto
• prefork
   – Identici parametri rispetto ad Apache 1.3
• Worker
   – Usa thread multipli




                                                 32
MPM prefork
• Processo principale
• Processi aggiuntivi per servire le richieste
• Parametri
  – StartServers (numero di processi da far partire)
  – MinspareServers, MaxSpareServers (autoadatta il
    numero di processi al carico, ciclo di isteresi)
  – MaxClients (massimo parallelismo: evita il thrashing)
  – MaxRequestPerChild (rejuvination: dopo un po' fa
    ripartire il processo per evitare il rischio di memory
    leak)


                                                             33
MPM worker
• Un processo principale
• Processi ausiliari con thread multipli
• Parametri
  – ThreadsPerChild
  – ServerLimit, ThreadLimit (massimo parallelismo: evita
    il thrashing)
  – StartServers, MinspareServers, MaxSpareServers,
    (come modello prefork)




                                                            34
Piccoli accorgimenti utili
• La maggior parte delle volte si possono mantenere le
  impostazioni di default
• Alcuni accorgimenti utili:
   – Modificare la pagina 404 (in httpd.conf)
   – Personalizzare l'autoindex (in httpd.conf e in
     httpd-autoindex.conf)
   – Impostare il livello del ServerTokens e il tipo di
     ServerSignature (entrambi in httpd-default.conf)




                                                          35
Lanciare apache:
• Per lanciare apache dalla directory server root:
<ServerRoot>$ bin/apachectl start



• Verificare l'apertura della porta:
$ netstat -ntlp | grep 8080
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6      0    0 :::8080    :::* LISTEN 28526/httpd




                                                                 36
Verifica del funzionamento di apache




                                       37
Funzionamento di Apache




                          38
Ciclo di vita di una richiesta
                                                      REQUEST

• Gestione della
  richiesta divisa in fasi                     Wait         Post-Re ad-Re que st



  successive                                                        URI Translation



• Ogni fase può essere       Cle anup                                   He ade r Parsing

  ridefinita da un
  module che estende
                                                                           Acce ss Control



  apache                                                                    Authe ntication



                                                                          Authorization


                             Logging
                                                                MIME Type Che cking



                                                            Fixup
                                        RESPONSE




                                        Docume nto                                            39
Ciclo delle richieste

• Post-Read-Request
   – vengono estratti i valori dei campi principali presenti nella richiesta
     HTTP e vengono inizializzate le strutture dati che verranno utilizzate
     successivamente dai moduli che implementano le varie fasi di
     gestione
• URI Translation
   – L’URI richiesto può riferirsi ad un file fisico, ad una risorsa dinamica
     prodotta da uno script esterno, oppure ad un documento generato
     da un modulo interno. Il server deve sapere come individuare il
     documento, prima di poter effettuare decisioni successive: è
     necessaria la conversione da URL a risorsa presente sul server.
   – Le direttive standard di Apache Alias, ScriptAlias e DocumentRoot
     permettono ad esempio di tradurre l’URI nel nome di un file presente
     nell’albero dei documenti. Moduli esterni come il mod_rewrite
     possono assumere il controllo di questa fase ed effettuare traduzioni
     più sofisticate.

                                                                                40
Ciclo delle richieste
• Header Parsing
   – Analisi dell’header della richiesta HTTP, al fine di estrarre
     informazioni utili sul client
• Access control
   – Identificazione della locazione di provenienza della richiesta
     (indirizzo IP)
• Authentication
   – Identificazione del cliente che ha effettuato la richiesta
• Authorization
   – Si stabilisce se il cliente possiede i diritti di accesso per il
     documento richiesto
• Mime type checking
   – Individuazione del tipo MIME del documento richiesto. Il server deve
     sapere il tipo della modalità di elaborazione richiesta (prelievo file da
     disco, generazione dinamica di un documento) prima di poter
     preparare la risposta. Noto il tipo del file, Apache individua il gestore
     opportuno per la fase di risposta.
                                                                                 41
Ciclo delle richieste
• Fixup
   – Fase introdotta per permettere l’esecuzione di un qualunque tipo di
     operazione prima dell’invio della risposta.
• Response
   – Le informazioni riguardanti il documento vengono passate al gestore
     opportuno (content handler), che si occupa di costruire l’header
     della risposta HTTP e di spedirlo al client. Successivamente,
     creazione del contenuto del documento (ad es., letto dal disco) ed
     invio al client. In caso di errore, il gestore invia un codice di errore
     opportuno al server, che lo notifica al client.
• Logging
   – L’esito delle operazioni effettuate viene scritto su file. Apache
     fornisce un supporto per il logging degli accessi e degli errori, che
     può essere modificato oppure esteso.
• Cleanup
   – Operazioni di chiusura, con cui i moduli possono deallocare le
     risorse utilizzate (ad es., liberare memoria principale, chiudere file).
                                                                                42
Logging




          43
Il logging
• I logfile permettono di monitorare gli accessi ad un server
  Web
   – Le informazioni che possono essere memorizzate nel logfile
     sono quelle che viaggiano all’interno dei messaggi di
     richiesta e risposta che il server scambia con il client usato
     dagli utenti
   – Generalmente i server Web permettono di definire quali
     campi dei messaggi devono essere memorizzati generando
     così dei logfile “custom” in modo da soddisfare al meglio le
     necessità dell’amministratore del sito Web




                                                                      44
Dati estraibili da un log file
• Orari di maggiore traffico
• Tipologia degli utenti (browser utilizzato,
  provenienza geografica)
• Pagine più popolari
• Quali siti fanno riferimento al proprio

• Attenzione: la presenza di proxy intermedi tra client
  e server Web può falsare i risultati



                                                          45
Utilità dei log file


• Monitorare lo stato del server

• Capacity planning

• Billing

• Attack detection




                                       46
Esempio
•127.0.0.1 - - [14/Oct/2002:18:00:16 +0200] "GET
/icons/apache_pb.gif HTTP/1.1" 200 2326 "http://localhost/"
"Mozilla/5.0 Galeon/1.2.6 (X11; Linux i686; U;)
Gecko/20020913 Debian/1.2.6-2"

•211.97.159.184 - - [14/Oct/2002:16:06:44 +0200] "GET
/default.ida?
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNN
%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7
801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190
%u00c3%u0003%u8b00%u531b%u53ff
%u0078%u0000%u00=a HTTP/1.0" 400 341 "-" "-"          47
Configurazione di log
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
CustomLog "logs/access_log" common
Significato dei campi:
• %h remote host
• %l remote log name (ottenuto mediante identd)
• %u remote user
• %t time of request
• "%r" prima linea della richiesta
• %>s stato della richiesta (response code)
• %b domensione della risposta in byte
• "%{Referer}i" header “referer” nella richiesta
• "%{User-Agent}i" header “user agent” nella richiesta
                                                                                    48

More Related Content

What's hot

Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017MongoDB
 
Implementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilitàImplementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilità
Alfredo Parisi
 
Introduzione DevOps con Ansible
Introduzione DevOps con AnsibleIntroduzione DevOps con Ansible
Introduzione DevOps con Ansible
Matteo Magni
 
PostgreSQL : Tuning
PostgreSQL : TuningPostgreSQL : Tuning
PostgreSQL : Tuning
Enrico Pirozzi
 
DDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continuaDDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continua
Dominopoint - Italian Lotus User Group
 
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterMySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
Par-Tec S.p.A.
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
MongoDB
 
PostgreSQL: Prima configurazione
PostgreSQL: Prima configurazionePostgreSQL: Prima configurazione
PostgreSQL: Prima configurazione
Enrico Pirozzi
 
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...MongoDB
 
Italian deft 7 manual 65
Italian deft 7 manual 65Italian deft 7 manual 65
Italian deft 7 manual 65mstrom62
 
Deploy MongoDB su Infrastruttura Amazon Web Services
Deploy MongoDB su Infrastruttura Amazon Web ServicesDeploy MongoDB su Infrastruttura Amazon Web Services
Deploy MongoDB su Infrastruttura Amazon Web Services
Stefano Dindo
 
Lezione 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in JavaLezione 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in Java
Andrea Della Corte
 
Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...
Fulvio Corno
 

What's hot (13)

Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
 
Implementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilitàImplementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilità
 
Introduzione DevOps con Ansible
Introduzione DevOps con AnsibleIntroduzione DevOps con Ansible
Introduzione DevOps con Ansible
 
PostgreSQL : Tuning
PostgreSQL : TuningPostgreSQL : Tuning
PostgreSQL : Tuning
 
DDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continuaDDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continua
 
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterMySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
 
PostgreSQL: Prima configurazione
PostgreSQL: Prima configurazionePostgreSQL: Prima configurazione
PostgreSQL: Prima configurazione
 
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
 
Italian deft 7 manual 65
Italian deft 7 manual 65Italian deft 7 manual 65
Italian deft 7 manual 65
 
Deploy MongoDB su Infrastruttura Amazon Web Services
Deploy MongoDB su Infrastruttura Amazon Web ServicesDeploy MongoDB su Infrastruttura Amazon Web Services
Deploy MongoDB su Infrastruttura Amazon Web Services
 
Lezione 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in JavaLezione 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in Java
 
Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...
 

Viewers also liked

Principi Di Parallelismo
Principi Di ParallelismoPrincipi Di Parallelismo
Principi Di ParallelismoMajong DevJfu
 
Parallel programming using MPI
Parallel programming using MPIParallel programming using MPI
Parallel programming using MPIMajong DevJfu
 
5 Protocolli Trasporto Parte3
5 Protocolli Trasporto Parte35 Protocolli Trasporto Parte3
5 Protocolli Trasporto Parte3Majong DevJfu
 

Viewers also liked (7)

2 Suite Standard
2 Suite Standard2 Suite Standard
2 Suite Standard
 
3 H2 N Parte3
3 H2 N Parte33 H2 N Parte3
3 H2 N Parte3
 
Principi Di Parallelismo
Principi Di ParallelismoPrincipi Di Parallelismo
Principi Di Parallelismo
 
Esercizio sigda n 6
Esercizio sigda n 6Esercizio sigda n 6
Esercizio sigda n 6
 
Parallel programming using MPI
Parallel programming using MPIParallel programming using MPI
Parallel programming using MPI
 
5 Protocolli Trasporto Parte3
5 Protocolli Trasporto Parte35 Protocolli Trasporto Parte3
5 Protocolli Trasporto Parte3
 
9 Ftp Telnet Email
9 Ftp Telnet Email9 Ftp Telnet Email
9 Ftp Telnet Email
 

Similar to Apache Parte 1

Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il MobileLe Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
I.S.I.S. "Antonio Serra" - Napoli
 
4 - Introduzione al Web (1/2) - 16/17
4 - Introduzione al Web (1/2) - 16/174 - Introduzione al Web (1/2) - 16/17
4 - Introduzione al Web (1/2) - 16/17
Giuseppe Vizzari
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSLa nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
Morlini Gabriele
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
Andrea Cirioni
 
Fr01 asp.net web api reloaded
Fr01   asp.net web api reloadedFr01   asp.net web api reloaded
Fr01 asp.net web api reloadedDotNetCampus
 
Nat come esporre servizi https senza esporre l'applicazione
Nat come esporre servizi https senza esporre l'applicazioneNat come esporre servizi https senza esporre l'applicazione
Nat come esporre servizi https senza esporre l'applicazione
Giuliano Latini
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
Imola Informatica
 
Fmdp Total System Monitor
Fmdp Total System MonitorFmdp Total System Monitor
Fmdp Total System Monitor
Filippo Maria Del Prete
 
phpday 2006 - SEA case study
phpday 2006 - SEA case studyphpday 2006 - SEA case study
phpday 2006 - SEA case study
Gaetano Giunta
 
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Data Driven Innovation
 
Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...
Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...
Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...Giulio Bonanome
 
Asp net (versione 1 e 2)
Asp net (versione 1 e 2)Asp net (versione 1 e 2)
Asp net (versione 1 e 2)
Felice Pescatore
 
Asp.net web api reloaded
Asp.net web api reloadedAsp.net web api reloaded
Asp.net web api reloadedPietro Libro
 
Usare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulUsare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulLuca Milan
 
Web api 2.0
Web api 2.0Web api 2.0
Web api 2.0
Nicolò Carandini
 
Thread
ThreadThread
Introduzione al PHP
Introduzione al PHPIntroduzione al PHP
Introduzione al PHP
GiancarloRomano1
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 

Similar to Apache Parte 1 (20)

Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il MobileLe Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
 
8 Www2009 Parte2
8 Www2009 Parte28 Www2009 Parte2
8 Www2009 Parte2
 
4 - Introduzione al Web (1/2) - 16/17
4 - Introduzione al Web (1/2) - 16/174 - Introduzione al Web (1/2) - 16/17
4 - Introduzione al Web (1/2) - 16/17
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSLa nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
 
Fr01 asp.net web api reloaded
Fr01   asp.net web api reloadedFr01   asp.net web api reloaded
Fr01 asp.net web api reloaded
 
Nat come esporre servizi https senza esporre l'applicazione
Nat come esporre servizi https senza esporre l'applicazioneNat come esporre servizi https senza esporre l'applicazione
Nat come esporre servizi https senza esporre l'applicazione
 
Corso Java 3 - WEB
Corso Java 3 - WEBCorso Java 3 - WEB
Corso Java 3 - WEB
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
 
Fmdp Total System Monitor
Fmdp Total System MonitorFmdp Total System Monitor
Fmdp Total System Monitor
 
phpday 2006 - SEA case study
phpday 2006 - SEA case studyphpday 2006 - SEA case study
phpday 2006 - SEA case study
 
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
 
Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...
Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...
Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...
 
Asp net (versione 1 e 2)
Asp net (versione 1 e 2)Asp net (versione 1 e 2)
Asp net (versione 1 e 2)
 
Asp.net web api reloaded
Asp.net web api reloadedAsp.net web api reloaded
Asp.net web api reloaded
 
Usare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTfulUsare le nuove WCF Web Api per creare servizi RESTful
Usare le nuove WCF Web Api per creare servizi RESTful
 
Web api 2.0
Web api 2.0Web api 2.0
Web api 2.0
 
Thread
ThreadThread
Thread
 
Introduzione al PHP
Introduzione al PHPIntroduzione al PHP
Introduzione al PHP
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 

More from Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 

More from Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

Apache Parte 1

  • 2. Premessa • Il Web è basato su un'architettura client-server • Un processo particolare (Web server) si occupa di processare le richieste di risorse Web • Le richieste sono veicolate attraverso il protocollo HTTP (Hyper Text Transfer Protocol) • Ci sono modi diversi di implementare un Web server • Ci sono diversi Web server 2
  • 3. Tre modalità di gestione richieste HTTP Piattaforma client Browser Richiesta Richiesta http http Risposta (1) Richiesta Risposta (i) http Risposta http http http Processo (a) (c) processo server (4) listener-dispatcher (b) (2) fork thread 1 (ii) (iv) thread 2 helper 1 Processo thread 3 (iii) helper 2 figlio thread 4 helper 3 Metodo fork Metodo multithread Metodo helper (aka worker) (aka prefork) (3) Piattaforma Apache 1.3.x server Apache 2.x 3
  • 4. Due parole su sicurezza e prestazioni Processo Thread molti processi molti processi un processo più thread un thread molti thread per processo per processo 4
  • 6. Apache: A patchy server 1994: public domain HTTP daemon (NCSA) sviluppato da Rob McCool al National Center for Supercomputing Applications, University of Illinois, Urbana-Champaign Necessità di modifiche (patches) Brian Behlendorf Roy T. Fielding Feb. 1995: un gruppo di Rob Hartill Webmaster David Robinson si coordinano creando Cliff Skolnick l’Apache Group Randy Terbush Robert S. Thau Andrew Wilson with additional contributions Eric Hagberg Frank Peters Nicolas Pioch 6
  • 7. Software per server Web <-WTH!!! Fonte: GoDaddy.com Netcraft Web Server Survey (http://www.netcraft.com/) Server Web più diffusi: Apache, …, Microsoft Internet Information Server, altri (GWS, SunONE, Zeus, iPlanet Web Server, …) Sistemi e Servizi di Rete - LS 2004/2005 – Server Web 7
  • 8. Caratteristiche di Apache • Free ed Open source • Portabile (Unix, Win32, OS/2, BeOS, ...) • Efficiente • Supporta HTTP/1.1 • Stabile e sicuro • Modulare • Supporta feature avanzate – Autenticazione – Personalizzazione log – Negoziazione contenuti – Virtual hosts 8
  • 10. Apache 1.3 • Versione storica di enorme successo • Ancora supportata • Caratteristiche salienti: – Approccio prefork per il servizio concorrente delle richieste – File di configurazione altamente configurabile – Supporto per HTTP/1.1, Virtual host, ... • Limiti principali – Approccio prefork può limitare le prestazioni – Scarsa portabilità fuori da contesti Unix (necessita system call Unix) 10
  • 11. Apache 2.0 • Major rewriting del codice • Modifiche architetturali fondamentali – Concetto di MPM (Multi Process Model) • Benefici: – Migliore portabilità su piattaforme non Unix – Maggiori prestazioni e incremento della flessibilità 11
  • 12. MPM In Apache • MPM=Multi Process Model • Modelli thread “nativi” – beos – mpm_os2 – mpm_winnt • Modelli “unix-oriented” – prefork (come apache 1.3, massima stabilità) – worker (usa thread, massime prestazioni) 12
  • 13. Apache 2.2 • Apache 2.2 è una minor version – Le modifiche non sono a livello architetturale • Riorganizzazione del file di configurazione – Molte distribuzioni linux introducevano un layout alternativo anche con apache 2.0 (es. Debian) • Riorganizzazione dei moduli – Alcuni moduli sono stati rinominati – Alcuni moduli “sperimentali” ora sono standard – Alcuni moduli sono stati riscritti e suddivisi – Nuovi moduli/nuovi MPM • Nuova API unificata per l'accesso ai DB • Migliorie generali – Supporto per file > 2GB 13
  • 14. Nuovo file di configurazione • Si passa da un file monolitico (httpd.conf) in una gerarchia di file articolata – I virtual hosts vengono configurati in un file separato – Le configurazioni sui moduli sono separate dal file centrale • Obiettivi: Manutenzione più semplice – Maggiore gestibilità delle configurazioni (es. se abbiamo molti virtual hosts) – Semplifica l'automazione della gestione del file di configurazione 14
  • 15. Riorganizzazione dei moduli • Moduli rinominati: – mod_imap → mod_imagemap – mod_access → mod_authz_host – mod_auth_ldap • Moduli sperimentali divenuti stabili – mod_cache e altri moduli simili (da usare con attenzione) – mod_dumpio (dump all I/O) • Moduli spezzati in sottoparti: – mod_auth viene suddiviso in molti sottomoduli – mod_proxy è esteso e spezzato in varie parti • New entries: – mod_dbd, mpm_event 15
  • 16. Nuova API per accesso a DB • Implementata mediante mod_dbd • La nuova API offre un layer di connettività a DBMS usabile da altri moduli – Semplifica e toglie codice ridondante nei moduli – Il modulo è sicuro, poiché tratta ogni untrusted input come user data. Il problema è come viene utilizzato da moduli terzi. Per evitare SQL Injection meglio filtrare i dati in input  $untrusted =~ /([a-z]+)/; ← Teniamo i caratteri a-z  $trusted = $1; 16
  • 18. Per gli impazienti • download dei sorgenti da httpd.apache.org – i sorgenti sono disponibili anche sul sito del corso • Noi facciamo riferimento alla versione 2.2 di apache $ tar -xzvf httpd-<versione>.tar.gz $ cd httpd-<versione> $ ./configure --prefix=</destination/path> $ make $ make install 18
  • 19. Principali opzioni di configurazione • Opzioni da passare allo script configure – --prefix=<prefix> – --with-mpm={beos|worker|prefork|mpm_os2} – --enable-modules={...} • Prefix è la directory dove verrà installato Apache • MPM indica quale sistema MPM dovrà essere usato per gestire le richieste concorrenti • Enable modules indica quali moduli dovranno essere abilitati (il default contiene I moduli più comunemente utilizati) 19
  • 20. Dopo aver installato apache Albero di directory: <prefix> bin conf htdocs cgi­bin logs 20
  • 21. Eseguibili di Apache <prefix> bin httpd apachectl ab htpasswd 21
  • 22. Eseguibili di apache • httpd: binario del server apache • ab: apache benchmark, strumento per misurare le prestazioni del Web server – ab -c <parallelismo> -n <# richieste> <URL> • apachectl: script per lanciare, fermare e controllare il demone – apachectl start – apachectl stop – apachectl restart • htpasswd: serve per generare e modificare file di autenticazione di apache – htpasswd [-c] <file.passwd> <username> 22
  • 24. File di configurazione <prefix> conf extras httpd.conf magic mime.types 24
  • 25. File di configurazione • File conf/httpd.conf • 2 sezioni – impostazioni globali – impostazioni del server di default • Presenza di file aggiuntivi nella directory extras – Ogni aspetto specifico della configurazione non richiede di modificare il file principale – Configurazione alcune impostazioni di default – Configurazioni specifiche per moduli (es. SSL) – Configurazione MPM – Configurazione del virtual hosting 25
  • 26. Impostazioni globali • ServerRoot – top level directory per altri file di configurazione • PidFile (facoltativo) – usato da apachectl per riconoscere httpd • Timeout (facoltativo) • Parametri per connessioni persistenti (facoltativi) – Keepalive (abilita o meno connessioni persistenti) – MaxKeepAliveRequests (dopo un certo numero di richieste forza la chiusura della connessione) – KeepAliveTimeout (dopo un certo tempo forza la chiusura della connessione) 26
  • 27. Impostazioni globali • Listen – porta su cui ascolta il server – valori tipici: 80 o 8080 per server “non di sistema” • Nel nostro caso dovremo usare 8080... Perchè? • LoadModule – Carica moduli esterni che estendono le funzioni di Apache (e.g., php) • User, Group – Utente non privilegiato usato da Apache – Per motivi di sicurezza si abbandonano il prima possibile i privilegi da superutente 27
  • 28. Impostazioni del server di default • ServerName (nome dell'host che ospita il server) • DocumentRoot (directory htdocs) • <Directory></Directory> (contenitore di settings) • <Location><Location> (contenitore di settings) – Options  Indexes (crea automaticamente indici)  Includes (Abilita ServerSide Includes)  FollowSymlinks, SymlinksIfOwnerMatch (Sicurezza symlink)  ExecCGI (abilita esecuzione di codice)  ... 28
  • 29. Configurazioni del Server di default • Ancora dentro Directory o Location – AllowOverride (uso di files .htaccess per cambiare impostazioni) – Allow, Deny (Access Control List su IP) • Esempi <Directory /> <Directory /[....]/htdocs> Options FollowSymLinks Options FollowSymLinks AllowOverride None AllowOverride None Order deny,allow Order allow,deny Deny from all Allow from all </Directory> </Directory> 29
  • 30. Configurazioni del Server di default • Ancora dentro Directory o Location – AllowOverride (uso di files .htaccess per cambiare impostazioni) – Allow, Deny (Access Control List su IP) • Direttive per il logging – ErrorLog (messaggi di errore) – CustomLog (messaggi sulle richieste) 30
  • 31. File con configurazioni extra • Direttiva include – Include conf/extra/httpd-mpm.conf – Include conf/extra/httpd-vhosts.conf – Include conf/extra/httpd-userdir.conf • Il contenuto dei file inclusi è trattato esattamente come se fosse nel file principale • Esempio: – Configurazione della user directory: – UserDir (diectory http://www.sito.it/~nomeUtente/) 31
  • 32. Impostazioni MPM • Dipendono da modello prescelto • prefork – Identici parametri rispetto ad Apache 1.3 • Worker – Usa thread multipli 32
  • 33. MPM prefork • Processo principale • Processi aggiuntivi per servire le richieste • Parametri – StartServers (numero di processi da far partire) – MinspareServers, MaxSpareServers (autoadatta il numero di processi al carico, ciclo di isteresi) – MaxClients (massimo parallelismo: evita il thrashing) – MaxRequestPerChild (rejuvination: dopo un po' fa ripartire il processo per evitare il rischio di memory leak) 33
  • 34. MPM worker • Un processo principale • Processi ausiliari con thread multipli • Parametri – ThreadsPerChild – ServerLimit, ThreadLimit (massimo parallelismo: evita il thrashing) – StartServers, MinspareServers, MaxSpareServers, (come modello prefork) 34
  • 35. Piccoli accorgimenti utili • La maggior parte delle volte si possono mantenere le impostazioni di default • Alcuni accorgimenti utili: – Modificare la pagina 404 (in httpd.conf) – Personalizzare l'autoindex (in httpd.conf e in httpd-autoindex.conf) – Impostare il livello del ServerTokens e il tipo di ServerSignature (entrambi in httpd-default.conf) 35
  • 36. Lanciare apache: • Per lanciare apache dalla directory server root: <ServerRoot>$ bin/apachectl start • Verificare l'apertura della porta: $ netstat -ntlp | grep 8080 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp6 0 0 :::8080 :::* LISTEN 28526/httpd 36
  • 39. Ciclo di vita di una richiesta REQUEST • Gestione della richiesta divisa in fasi Wait Post-Re ad-Re que st successive URI Translation • Ogni fase può essere Cle anup He ade r Parsing ridefinita da un module che estende Acce ss Control apache Authe ntication Authorization Logging MIME Type Che cking Fixup RESPONSE Docume nto 39
  • 40. Ciclo delle richieste • Post-Read-Request – vengono estratti i valori dei campi principali presenti nella richiesta HTTP e vengono inizializzate le strutture dati che verranno utilizzate successivamente dai moduli che implementano le varie fasi di gestione • URI Translation – L’URI richiesto può riferirsi ad un file fisico, ad una risorsa dinamica prodotta da uno script esterno, oppure ad un documento generato da un modulo interno. Il server deve sapere come individuare il documento, prima di poter effettuare decisioni successive: è necessaria la conversione da URL a risorsa presente sul server. – Le direttive standard di Apache Alias, ScriptAlias e DocumentRoot permettono ad esempio di tradurre l’URI nel nome di un file presente nell’albero dei documenti. Moduli esterni come il mod_rewrite possono assumere il controllo di questa fase ed effettuare traduzioni più sofisticate. 40
  • 41. Ciclo delle richieste • Header Parsing – Analisi dell’header della richiesta HTTP, al fine di estrarre informazioni utili sul client • Access control – Identificazione della locazione di provenienza della richiesta (indirizzo IP) • Authentication – Identificazione del cliente che ha effettuato la richiesta • Authorization – Si stabilisce se il cliente possiede i diritti di accesso per il documento richiesto • Mime type checking – Individuazione del tipo MIME del documento richiesto. Il server deve sapere il tipo della modalità di elaborazione richiesta (prelievo file da disco, generazione dinamica di un documento) prima di poter preparare la risposta. Noto il tipo del file, Apache individua il gestore opportuno per la fase di risposta. 41
  • 42. Ciclo delle richieste • Fixup – Fase introdotta per permettere l’esecuzione di un qualunque tipo di operazione prima dell’invio della risposta. • Response – Le informazioni riguardanti il documento vengono passate al gestore opportuno (content handler), che si occupa di costruire l’header della risposta HTTP e di spedirlo al client. Successivamente, creazione del contenuto del documento (ad es., letto dal disco) ed invio al client. In caso di errore, il gestore invia un codice di errore opportuno al server, che lo notifica al client. • Logging – L’esito delle operazioni effettuate viene scritto su file. Apache fornisce un supporto per il logging degli accessi e degli errori, che può essere modificato oppure esteso. • Cleanup – Operazioni di chiusura, con cui i moduli possono deallocare le risorse utilizzate (ad es., liberare memoria principale, chiudere file). 42
  • 43. Logging 43
  • 44. Il logging • I logfile permettono di monitorare gli accessi ad un server Web – Le informazioni che possono essere memorizzate nel logfile sono quelle che viaggiano all’interno dei messaggi di richiesta e risposta che il server scambia con il client usato dagli utenti – Generalmente i server Web permettono di definire quali campi dei messaggi devono essere memorizzati generando così dei logfile “custom” in modo da soddisfare al meglio le necessità dell’amministratore del sito Web 44
  • 45. Dati estraibili da un log file • Orari di maggiore traffico • Tipologia degli utenti (browser utilizzato, provenienza geografica) • Pagine più popolari • Quali siti fanno riferimento al proprio • Attenzione: la presenza di proxy intermedi tra client e server Web può falsare i risultati 45
  • 46. Utilità dei log file • Monitorare lo stato del server • Capacity planning • Billing • Attack detection 46
  • 47. Esempio •127.0.0.1 - - [14/Oct/2002:18:00:16 +0200] "GET /icons/apache_pb.gif HTTP/1.1" 200 2326 "http://localhost/" "Mozilla/5.0 Galeon/1.2.6 (X11; Linux i686; U;) Gecko/20020913 Debian/1.2.6-2" •211.97.159.184 - - [14/Oct/2002:16:06:44 +0200] "GET /default.ida? NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNN %u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7 801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190 %u00c3%u0003%u8b00%u531b%u53ff %u0078%u0000%u00=a HTTP/1.0" 400 341 "-" "-" 47
  • 48. Configurazione di log LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined LogFormat "%h %l %u %t "%r" %>s %b" common CustomLog "logs/access_log" common Significato dei campi: • %h remote host • %l remote log name (ottenuto mediante identd) • %u remote user • %t time of request • "%r" prima linea della richiesta • %>s stato della richiesta (response code) • %b domensione della risposta in byte • "%{Referer}i" header “referer” nella richiesta • "%{User-Agent}i" header “user agent” nella richiesta 48