Web server
cosa è servizio per la distribuzione di ipertesti in origine solo trasferimento (web statico) ora anche elaborazione (web dinamico) problematiche comuni: gestione diritti e permessi gestione sicurezza gestione autenticazione log e statistiche lingue estensioni
scelta server
scelta server (2) il “più diffuso” risulta essere apache nasce come erede del NCSA httpd implementazione HTTP/1.1 estendibile mediante “moduli” disponibile per differenti sistemi operativi
versioni apache attualmente utilizzate: 1.3.x: ancora ampiamente diffuso nato per essere retrocompatibile 2.2.x: miglioramento in ampia fase di rimpiazzo del precedente
installazione apache file di configurazione in /etc/apache2 oppure /etc/httpd o /etc/apache ( switch -f) tipicamente 2 file fondamentali: httpd.conf (configurazione processo) mime.types (gestione tipi di dato) in realtà dipende dalla distribuzione
setup iniziale drwxr-xr-x 2 daemon bin 4096 Jun 3 15:30 extra -rw-r--r-- 1 daemon bin 13346 Jun 3 15:30 httpd.conf -rw-r--r-- 1 daemon bin 12958 Jun 3 15:30 magic -rw-r--r-- 1 daemon bin 31172 Jun 3 15:30 mime.types extra: -rw-r--r-- 1 daemon bin 2845 Jun 3 15:30 httpd-autoindex.conf -rw-r--r-- 1 daemon bin 1718 Jun 3 15:30 httpd-dav.conf -rw-r--r-- 1 daemon bin 2344 Jun 3 15:30 httpd-default.conf -rw-r--r-- 1 daemon bin 1103 Jun 3 15:30 httpd-info.conf -rw-r--r-- 1 daemon bin 5078 Jun 3 15:30 httpd-languages.conf -rw-r--r-- 1 daemon bin 918 Jun 3 15:30 httpd-manual.conf -rw-r--r-- 1 daemon bin 3789 Jun 3 15:30 httpd-mpm.conf -rw-r--r-- 1 daemon bin 2186 Jun 3 15:30 httpd-multilang-errordoc.conf -rw-r--r-- 1 daemon bin 10283 Jun 3 15:30 httpd-ssl.conf -rw-r--r-- 1 daemon bin 817 Jun 3 15:30 httpd-userdir.conf -rw-r--r-- 1 daemon bin 1493 Jun 3 15:30 httpd-vhosts.conf
principali direttive User webuser Group webgroup ServerName nomemacchina ServerRoot /path di rif/conf e log DocumentRoot /path/documenti Listen 80 ErrorDocument 404 /path/doc/404.html DirectoryIndex index.php index.html
<Directory></Directory> Permette di specificare i permessi specifici attenzione a / !!! <Directory "/home/htdocs"> Options Indexes FollowSymLinks AllowOverride AuthConfig Order allow,deny Allow from all </Directory>
Options Alcune necessitano di moduli aggiuntivi: *ExecCGI FollowSymLinks FollowSymLinksIfOwnerMatch Indexes *Multiviews *Includes All/None
AllowOverride .htaccess Options +/- potenziale degrado prestazioni proteggerlo da lettura <FilesMatch "^\.ht"> Order allow,deny Deny from all Satisfy All </FilesMatch>
controllo accesso numerose tecniche direttive allow/deny order specifica ordine applicazione satisfy per coesistenza altre autenticazioni
moduli possibile il caricamento di moduli estensione delle funzionalità base forniti anche da terze parti LoadModule <nome> <percorso> spesso modules.conf ubuntu: directory specifiche a2enmod/a2dismod
auth_module gestione autenticazione “Basic” AuthType Basic AuthName “titolo finestra” AuthUserFile /.../.../nomefile AuthGroupFile /../../.. require user bertozzi require valid-user
controllo accesso (2) <Directory /var/www/private> Order deny,allow Allow from 160.78.28 160.78.23 160.78.27 Deny from all AuthType Basic AuthName "Private area bldg. 1" AuthUserFile /etc/htpasswd require valid-user Satisfy any </Directory>
mod_negotiation gestione negoziazione contenuti utile per lingua formati file Option Multiview (per le directory) AddLanguage en .en .english LanguagePriority en it fr
php4/5_module linguaggio lato server gestione pagine dinamiche file di configurazione a parte /etc/php...
mod_rewrite riscrive l'URL in ingresso URL più facili effetto PR o -in generale- motori di ricerca utilizzo espressioni regolari <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^/catalogo/(.*)$ /cat.php?id=$1 [L] RewriteCond %{HTTP_REFERER} cgi.ebay.* [NC] RewriteRule jpg$ http://myweb.it/imgs/x.gif [L] </IfModule>
virtual hosts tipico dell'hosting di servizi web due modalità HTTP/1.0 basata su IP HTTP/1.1 basata su nome (SSL!) necessaria gestione DNS sezione VirtualHost ubuntu: dir specifica e a2ensite/a2dissite
esempio virtual host NameVirtualHost *:80 # obbligatoria se non vi sono differenze <VirtualHost *:80> ServerAdmin webmaster@pippo.com DocumentRoot "/home/htdocs/pippo.com" ServerName pippo.com ServerAlias www.pippo.com ErrorLog "logs/pippo_error.log" CustomLog "logs/pippo_access.log" common </VirtualHost> ServerAdmin webmaster@paperino.com DocumentRoot "/usr/local/apache2/docs/paperino" ServerName geppo.com ErrorLog "logs/paperino_error.log" CustomLog "logs/paperino_access.log" common
Proxy accesso ai servizi web (ma non solo) scopi: maggiore velocità riduzione traffico controllo accessi prodotti squid apache ...