Corso di Basi di Dati e Laboratorio




                           Apache
              Alfio Ferrara - Stefano Montanelli...
Architettura

• Componenti principali
   – Inizializzazione e configurazione
   – Parser delle richieste HTTP
   – Allocaz...
Configurazione

• Avviene editando il file httpd.conf
• Le opzioni di configurazione sono definite
  tramite direttive
• P...
Moduli

Direttive per la gestione dei moduli:
• LoadModule nomemodulo nomefile
   – Carica il modulo nomemodulo istituendo...
Direttive
• <Files filename> … </Files>
   – Specifica un insieme di direttive da applicare al file
     filename
• <Files...
BrowserMatch

• BrowserMatch riconosce il client che
  effettua la chiamata sulla base del campo
  user-agent della richie...
Esempio
•    SetEnvIf Request_URI ^/manual/(de|en|it)/ prefLang=$1
•    SetEnvIf Request_URI quot;.gif$quot; object_is_ima...
Autenticazione

• Meccanismo base per l’autenticazione:
   – Il server riceve una richiesta per una risorsa
     protetta
...
Direttiva

• La direttiva (directory) che specifica
  l’accesso per una data cartella è composta
  dagli elementi seguenti...
Combinare le direttive

• L’istruzione order permette di definire un
  ordine di precedenza nell’esaudire le
  direttive s...
Upcoming SlideShare
Loading in …5
×

Laboratorio Di Basi Di Dati 08 Il Web Server Apache

1,776 views
1,717 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,776
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
35
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Laboratorio Di Basi Di Dati 08 Il Web Server Apache

  1. 1. Corso di Basi di Dati e Laboratorio Apache Alfio Ferrara - Stefano Montanelli A.A. 2005/2006 Basi di Dati e Laboratorio 1 Apache • Server Web open source • Il progetto ha origine nel 1995 • Apache ha un’architettura modulare e altamente configurabile • http://www.apache.org A.A. 2005/2006 Basi di Dati e Laboratorio 2 Diffusione sul mercato Dicembre 2005 - http://news.netcraft.com 69.97 % (52.025.380) 20.92 % (15.557.786) 2.53 % (1.881.861) 0.79 % (577.384 ) APACHE MICROSOFT JAVA ZEUS A.A. 2005/2006 Basi di Dati e Laboratorio 3 1
  2. 2. Architettura • Componenti principali – Inizializzazione e configurazione – Parser delle richieste HTTP – Allocazione della memoria • Moduli – Autentificazione e sicurezza – Redirezione – Estensioni (supporto ai linguaggi di scripting) A.A. 2005/2006 Basi di Dati e Laboratorio 4 Installazione • In breve… –$ ./configure --prefix=PREFIX –$ make –$ make install –$ PREFIX/bin/apachectl start • Due opzioni importanti: – Perl 5 è richiesto per l’esecuzione di diversi script (apxs). È consigliata l’opzione --with-perl – DSO per il supporto al caricamento dinamico dei moduli A.A. 2005/2006 Basi di Dati e Laboratorio 5 Avvio del server • Il server viene avviato sulla porta specificata (assieme alle altre opzioni di configurazione) nel file httpd.conf • In ambiente UNIX Apache può essere avviato tramite inetd oppure: – /usr/local/apache/bin/httpd, oppure attraverso lo script apachectl • In ambiente Windows l’avvio è analogo a quello degli altri servizi NT A.A. 2005/2006 Basi di Dati e Laboratorio 6 2
  3. 3. Configurazione • Avviene editando il file httpd.conf • Le opzioni di configurazione sono definite tramite direttive • Principali elementi della configurazione: – Variabili d’ambiente – Gestione degli accessi – Comportamento a seguito di specifiche richieste A.A. 2005/2006 Basi di Dati e Laboratorio 7 DSO e moduli • DSO (Dynamic Shared Objects) – Consentono il caricamento dei moduli di Apache a run-time • Sono supportati tramite il modulo mod_so.c che deve essere compilato staticamente con Apache • Il modulo mod_so consente l’uso della direttiva LoadModule nel file di configurazione per il caricamento dei moduli richiesti A.A. 2005/2006 Basi di Dati e Laboratorio 8 Apxs • La gestione dei moduli è stata semplificata attraverso l’utility apxs che permette di generare i DSO • Vantaggi di DSO: – Flessibilità – Estendibilità (ad esempio l’aggiunta del modulo di supporto per PHP) • Svantaggi: – Prestazioni inferiori rispetto alla compilazione statica dei moduli A.A. 2005/2006 Basi di Dati e Laboratorio 9 3
  4. 4. Moduli Direttive per la gestione dei moduli: • LoadModule nomemodulo nomefile – Carica il modulo nomemodulo istituendo un link con il nomefile ad esso associato • E.g., LoadModule dir_module modules/mod_dir.so • <IfModule [!]nomemodulo> … </IfModule> – Esegue un’insieme di direttive solo nel caso che nomemodulo sia caricato (o non caricato) • E.g., <IfModule mod_ssl.c> Include conf/ssl.conf </IfModule> A.A. 2005/2006 Basi di Dati e Laboratorio 10 Direttive • Le direttive istruiscono Apache sulle azioni da intraprendere in risposta ad una richiesta per una specifica risorsa • Vengono utilizzati dei marcatori per definire lo scope di una direttiva • Esempi di direttive: – <Directory> – <DirectoryMatch> – <Files> – <FilesMatch> – <Location> – <LocationMatch> – <VirtualHost> A.A. 2005/2006 Basi di Dati e Laboratorio 11 Direttive • <Directory dirpath> … </Directory> – Specifica un insieme di direttive da applicare alla cartella indicata in dirpath e alle sottocartelle in essa contenute • E.g., <Directory “/var/www/site/unimi/quot;> Allow from dico.unimi.it Options Indexes </Directory> • <DirectoryMatch regexpr> … </ DirectoryMatch> – Specifica un insieme di direttive da applicare alle cartelle che soddisfano l’espressione regolare regexpr • E.g., <DirectoryMatch “^/www/[0-9]{3}quot;> Order allow, deny Allow from dico.unimi.it </DirectoryMatch> A.A. 2005/2006 Basi di Dati e Laboratorio 12 4
  5. 5. Direttive • <Files filename> … </Files> – Specifica un insieme di direttive da applicare al file filename • <FilesMatch regexpr> … </FilesMatch> – Specifica un insieme di direttive da applicare ai files che soddisfano l’espressione regolare regexpr • <Location url> … </Location> – Specifica un insieme di direttive da applicare alle risorse specificate in url • <LocationMatch regexpr> … </LocationMatch> – Specifica un insieme di direttive da applicare alle risorse che soddisfano l’espressione regolare regexpr A.A. 2005/2006 Basi di Dati e Laboratorio 13 Direttive • <VirtualHost addr[:port]> … </ VirtualHost> – Configura un host-virtuale • E.g., <VirtualHost 192.168.0.7:8081> ServerAdmin webmaster@dico.unimi.it DocumentRoot “C:/docs” ServerName webdico:8081 </VirtualHost> A.A. 2005/2006 Basi di Dati e Laboratorio 14 Variabili d’ambiente • Sono utilizzate dal server per registrare informazioni e per condividerle con altre applicazioni (ad esempio con applicazioni CGI) • Le principali direttive per manipolare le variabili d’ambiente sono: – BrowserMatch – PassEnv – RewriteRule – SetEnv – SetEnvIf – UnsetEnv A.A. 2005/2006 Basi di Dati e Laboratorio 15 5
  6. 6. BrowserMatch • BrowserMatch riconosce il client che effettua la chiamata sulla base del campo user-agent della richiesta HTTP – BrowserMatch “Mozilla/2 nokeepalive” – BrowserMatch “RealPlayer 4.0” force-response-1.0 A.A. 2005/2006 Basi di Dati e Laboratorio 16 PassEnv, SetEnv, e UnSetEnv • PassEnv passa ad uno script CGI il valore di una delle variabili d’ambiente – PassEnv SPECIAL_PATH • SetEnv definisce il valore di assegnazione di una variabile d’ambiente – SetEnv SPECIAL_PATH /bin • UnSetEnv rimuove una variabile di ambiente: – UnSetEnv SPECIAL_PATH A.A. 2005/2006 Basi di Dati e Laboratorio 17 SetEnvIf • SetEnvIf definisce il valore di una variabile sulla base degli attributi della richiesta HTTP: – Remote_Host – Remote_Addr – Server_Addr – Request_Method – Request_Protocol – Request_URI A.A. 2005/2006 Basi di Dati e Laboratorio 18 6
  7. 7. Esempio • SetEnvIf Request_URI ^/manual/(de|en|it)/ prefLang=$1 • SetEnvIf Request_URI quot;.gif$quot; object_is_image=gif • SetEnvIf Request_URI quot;.jpg$quot; object_is_image=jpg • SetEnvIf Request_URI quot;.xbm$quot; object_is_image=xbm • Il valore delle variabili prefLang e object_is_image viene definito sulla base della risorsa richiesta tramite HTTP A.A. 2005/2006 Basi di Dati e Laboratorio 19 Controllo dell’accesso • L’accesso alle risorse viene definito sulla base di tre principali criteri: – Authorization – Authentication – Access control A.A. 2005/2006 Basi di Dati e Laboratorio 20 Criteri di accesso • Authentication – Verifica dell’identità del richiedente • Authorization – Verifica dei permessi associati ad un utente autenticato • Access control – Definizione di criteri di accesso generici (ad esempio sulla base dell’IP di provenienza della richiesta) A.A. 2005/2006 Basi di Dati e Laboratorio 21 7
  8. 8. Autenticazione • Meccanismo base per l’autenticazione: – Il server riceve una richiesta per una risorsa protetta – Invia una risposta con header 401 (Authentication required) – Il browser si occupa di chiedere all’utente i dati di autentifica e di memorizzarli per le successive transazioni A.A. 2005/2006 Basi di Dati e Laboratorio 22 Protezione delle risorse • Per creare un semplice meccanismo di protezione delle risorse occorre: – Creare un file contenente una password – Definire una configurazione che utilizzi la password definita A.A. 2005/2006 Basi di Dati e Laboratorio 23 Creazione di una password • htpasswd -c /percorso_accessibile_ad_apache/file username • La password viene crittata e associata ad uno o più utenti attraverso una direttiva • La direttiva specifica la directory o la risorsa a cui si applica la restrizione d’accesso A.A. 2005/2006 Basi di Dati e Laboratorio 24 8
  9. 9. Direttiva • La direttiva (directory) che specifica l’accesso per una data cartella è composta dagli elementi seguenti: – AuthType - tipo di identificazione (basic) – AuthName - nome dell’autentificazione – AuthUserFile - locazione del file delle password – AuthGroupFile - file delle password di un gruppo – Require - caratteristiche richieste per l’autentificazione A.A. 2005/2006 Basi di Dati e Laboratorio 25 Esempio • AuthType Basic • AuthName ”Area ristrettaquot; • AuthUserFile /usr/…passwords • Require user tizio caio • Per applicare un’autentifica ad un ramo del file system visibile al server Web senza modificarne la configurazione è possibile ricorrere al file .htaccess collocato nella directory protetta e contenente la direttiva A.A. 2005/2006 Basi di Dati e Laboratorio 26 Controllo dell’accesso • Le direttive Allow e Deny sono utilizzate per vincolare l’accesso sulla base delle caratteristiche della richiesta • Esempi: – deny from 159.149 – deny from www.dominio.esempio – deny from .com – allow from 127.0.0.1 – allow from islab.dico.unimi.it – allow from unimi.it A.A. 2005/2006 Basi di Dati e Laboratorio 27 9
  10. 10. Combinare le direttive • L’istruzione order permette di definire un ordine di precedenza nell’esaudire le direttive specificate • Esempio: – Order Deny,Allow Deny from all Allow from 127.0.0.1 • Consente solo un accesso locale A.A. 2005/2006 Basi di Dati e Laboratorio 28 Completezza • La direttiva satisfy permette di stabilire se tutte le restrizioni (all) o solo alcune (any) devono essere rispettate • Esempio: – <Directory /usr/local/apache/htdocs/commerce> – AuthType Basic – AuthName intranet – AuthUserFile /www/passwd/users – Require user customer – Allow from internal.com – Satisfy any – </Directory> • Alla cartellla commerce accedono gli utenti in possesso di password o quelli del dominio internal.com A.A. 2005/2006 Basi di Dati e Laboratorio 29 10

×