5622
Comment:
|
5472
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
== Appunti sparsi su Apache e Apache2 == | = Appunti sparsi su Apache e Apache 2 = |
Line 3: | Line 3: |
==== Configurazione minimale di apache2 su Debian Lenny e Squeeze ==== Configurazione minimale di Apache 2 per servire http e https con php5: * Creare un file {{{conf.d/00local.conf}}} con dentro le configurazioni personalizzate valide per tutti i siti. Cosi` facendo si puo` evitare di adare a pistolare il file {{{apache2.conf}}} {{{ # Qui ci sono le config locali (cioe` quelle fatte da me) # che sono generali per tutti i siti e quindi non voglio dover # ripetere tutte le volte dentro ai vari files in sites-available |
== Configurazione minimale di Apache 2 su Devuan Jessie e Debian 8 == |
Line 14: | Line 6: |
ServerAdmin <la vostra email preferita> DocumentRoot /var/www/ |
Di default Apache 2 si avvia senza supporto https e senza named virtual. |
Line 17: | Line 8: |
### permessi su tutto il disco <Directory /> Options FollowSymLinks AllowOverride None </Directory> |
Io preferisco usare sempre dei named virtual, quindi imposto un default che non porti a nulla (una directory con un index.html senza niente) e poi tanti named virtual quanti ne servono. |
Line 23: | Line 10: |
### permessi su /var/www <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All ### Impostare a "None" se NON serve usare i .htaccess Order allow,deny allow from all </Directory> ### configurazione di cgi-bin ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> # logging # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel notice CustomLog ${APACHE_LOG_DIR}/access.log combined |
Attenzione: se imposti un named virtual che ha lo stesso nome del FQDN del server (che so, mail.example.com) questo named virtual non funzionera`. I named virtual devono SEMPRE avere un nome diverso dal FQDN del server. |
Line 48: | Line 13: |
### accesso alla documentazione di Debian Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 10.1.42.0/24 10.1.43.0/24 </Directory> }}} |
=== Configurazione minimale di Apache 2 per servire http e https: === |
Line 59: | Line 15: |
* Aggiungere dentro a {{{sites-available}}} un file con un nome sensato (il nome del server?) contenente le impostazioni per lo specifico virtuale. Ha senso metterne uno per ogni virtuale, ovviamente. Qui di seguito ne riporto uno per il virtuale "principale", cioe` quello che viene usato se non matcha nessun named virtual specifico. La sezione non-ssl non contiene nulla, ma funziona benissimo grazie al fatto che tutte le impostazioni di default sono state definite prima. Quella SSL contiene solo l'attivazione dell'engine SSL, e anche essa eredita le configurazioni generali definite prima. | Se vogliamo anche https, occorre abilitare il modulo con il comando {{{a2enmod ssl}}} e creare i certificati. Se non abilitiamo il modulo ssl le configurazioni di ssl verranno ignorate. * Creare un file {{{sites-available/default.conf}}} con dentro le configurazioni per il sito di default: |
Line 62: | Line 20: |
ServerAdmin postmaster@example.com DocumentRoot /var/www/default |
|
Line 64: | Line 24: |
<VirtualHost *:443> # Configurazione SSL |
<IfModule mod_ssl.c> <VirtualHost *:443> |
Line 67: | Line 28: |
SSLCertificateFile /etc/apache2/ssl/mater.kurgan.org.crt SSLCertificateKeyFile /etc/apache2/ssl/mater.kurgan.org.key </VirtualHost> |
SSLCertificateFile /etc/letsencrypt/example.cert SSLCertificateKeyFile /etc/letsencrypt/example.key ServerAdmin postmaster@example.com DocumentRoot /var/www/default </VirtualHost> </IfModule> |
Line 71: | Line 35: |
* Abilitare questa configurazione e disabilitare il default "originale" che e` il file {{{000-default.conf}}}, creando i link dentro a {{{sites-enabled}}} o usando i comandi {{{a2ensite}}} e {{{a2dissite}}} * Creare la directory {{{/var/www/default}}} (o quella che vogliamo usare) e magari metterci dentro un index.html con qualche avviso che dice che questo non e` il server che state cercando. * Ricaricare Apache per vedere il risultato |
|
Line 72: | Line 39: |
Questo e` un esempio di un named virtual che non e` il principale, senza SSL. | === A questo punto possiamo creare un named virtual che non sia il default, se ci serve === * Creare un file {{{sites-available/default.conf}}} con dentro le configurazioni per nostro named virtual, poniamo che sia "webmail.example.com": |
Line 75: | Line 46: |
ServerName www.kurgan.org ServerAlias www.kurgan.it DocumentRoot /var/www/www-kurgan CustomLog /var/log/apache2/access-www.kurgan.org.log combined |
ServerAdmin postmaster@example.com ServerName webmail.example.com ErrorLog ${APACHE_LOG_DIR}/webmail-error.log CustomLog ${APACHE_LOG_DIR}/webmail-access.log combined DocumentRoot /var/www/webmail |
Line 80: | Line 52: |
}}} * Editare i link dentro a {{{sites-enabled}}} collegando le configurazioni in ordine di apparizione. Rimuovere il link a {{{sites-available/default}}} che ora non serve piu`. * Se si vuole usare ssl, occorre linkare i files giusti (ssl.conf e ssl.load) da {{{mods-available}}} a {{{mods-enabled}}} |
|
Line 86: | Line 54: |
==== Redirect da un sito a un altro ==== | <IfModule mod_ssl.c> <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/letsencrypt/webmail-example.cert SSLCertificateKeyFile /etc/letsencrypt/webmail-example.key ServerAdmin postmaster@example.com ServerName webmail.example.com ErrorLog ${APACHE_LOG_DIR}/webmail-error.log CustomLog ${APACHE_LOG_DIR}/webmail-access.log combined DocumentRoot /var/www/webmail </VirtualHost> </IfModule> }}} * Abilitare questa configurazione creando il link dentro a {{{sites-enabled}}} o usando il comandio {{{a2ensite}}} * Creare la directory {{{/var/www/webmail}}} e metterci dentro cio` che serve. * Ricaricare Apache per vedere il risultato |
Line 88: | Line 71: |
Per, per esempio, forzare un redirect da un sito http all'equivalente https, posso usare il comando "redirect" dentro alla configurazione. Posso usarlo anche per fare altri redirect non necessariamente fra http e https. Notare che devo indicare l' url di partenza (/) e quello di arrivo. Per evitare problemi con il rinnovo dei certificati di Let's Encrypt e` opportuno usare un redirect che NON ridiriga le richieste dei files sotto {{{/.well-known/acme-challenge/}}}. | === Redirect da un sito a un altro === Per, per esempio, forzare un redirect da un sito http all'equivalente https, posso usare il comando "redirect" o il comando "redirectmatch" dentro alla configurazione. Posso usarlo anche per fare altri redirect non necessariamente fra http e https. Notare che devo indicare l' url di partenza (/) e quello di arrivo. Per evitare problemi con il rinnovo dei certificati di Let's Encrypt e` opportuno usare un redirect che NON ridiriga le richieste dei files sotto {{{/.well-known/acme-challenge/}}}. |
Line 114: | Line 100: |
==== Gestione del charset ==== | == Gestione del charset == |
Line 119: | Line 105: |
==== Creazione di un certificato SSL self-signed per Apache2 ==== | == Creazione di un certificato SSL self-signed per Apache2 == |
Line 129: | Line 115: |
==== Configurazione di apache 1.3 con mod_ssl ==== | == Configurazione di apache 1.3 con mod_ssl == |
Appunti sparsi su Apache e Apache 2
Configurazione minimale di Apache 2 su Devuan Jessie e Debian 8
Di default Apache 2 si avvia senza supporto https e senza named virtual.
Io preferisco usare sempre dei named virtual, quindi imposto un default che non porti a nulla (una directory con un index.html senza niente) e poi tanti named virtual quanti ne servono.
Attenzione: se imposti un named virtual che ha lo stesso nome del FQDN del server (che so, mail.example.com) questo named virtual non funzionera`. I named virtual devono SEMPRE avere un nome diverso dal FQDN del server.
Configurazione minimale di Apache 2 per servire http e https:
Se vogliamo anche https, occorre abilitare il modulo con il comando a2enmod ssl e creare i certificati. Se non abilitiamo il modulo ssl le configurazioni di ssl verranno ignorate.
Creare un file sites-available/default.conf con dentro le configurazioni per il sito di default:
<VirtualHost *:80> ServerAdmin postmaster@example.com DocumentRoot /var/www/default </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/letsencrypt/example.cert SSLCertificateKeyFile /etc/letsencrypt/example.key ServerAdmin postmaster@example.com DocumentRoot /var/www/default </VirtualHost> </IfModule>
Abilitare questa configurazione e disabilitare il default "originale" che e` il file 000-default.conf, creando i link dentro a sites-enabled o usando i comandi a2ensite e a2dissite
Creare la directory /var/www/default (o quella che vogliamo usare) e magari metterci dentro un index.html con qualche avviso che dice che questo non e` il server che state cercando.
- Ricaricare Apache per vedere il risultato
A questo punto possiamo creare un named virtual che non sia il default, se ci serve
* Creare un file sites-available/default.conf con dentro le configurazioni per nostro named virtual, poniamo che sia "webmail.example.com":
<VirtualHost *:80> ServerAdmin postmaster@example.com ServerName webmail.example.com ErrorLog ${APACHE_LOG_DIR}/webmail-error.log CustomLog ${APACHE_LOG_DIR}/webmail-access.log combined DocumentRoot /var/www/webmail </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/letsencrypt/webmail-example.cert SSLCertificateKeyFile /etc/letsencrypt/webmail-example.key ServerAdmin postmaster@example.com ServerName webmail.example.com ErrorLog ${APACHE_LOG_DIR}/webmail-error.log CustomLog ${APACHE_LOG_DIR}/webmail-access.log combined DocumentRoot /var/www/webmail </VirtualHost> </IfModule>
Abilitare questa configurazione creando il link dentro a sites-enabled o usando il comandio a2ensite
Creare la directory /var/www/webmail e metterci dentro cio` che serve.
- Ricaricare Apache per vedere il risultato
Redirect da un sito a un altro
Per, per esempio, forzare un redirect da un sito http all'equivalente https, posso usare il comando "redirect" o il comando "redirectmatch" dentro alla configurazione. Posso usarlo anche per fare altri redirect non necessariamente fra http e https. Notare che devo indicare l' url di partenza (/) e quello di arrivo. Per evitare problemi con il rinnovo dei certificati di Let's Encrypt e` opportuno usare un redirect che NON ridiriga le richieste dei files sotto /.well-known/acme-challenge/.
Esempio:
<VirtualHost *:80> ServerName www.pippo.com ServerAdmin email@pippo.com RedirectMatch 301 ^(?!/\.well-known/acme-challenge/).* https://www.pippo.com$0 DocumentRoot /var/www/dovevuoitu </VirtualHost> <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/apache2/ssl/pippo.crt SSLCertificateKeyFile /etc/apache2/ssl/pippo.key SSLProtocol All -SSLv2 -SSLv3 Eccetera eccetera </VirtualHost>
Gestione del charset
Se le pagine del sito contengono caratteri non-standard che non sono codificati correttamente in HTML (tipo le lettere accentate), e queste nel browser vengono male, occorre definire il charset standard. Per farlo, editare /etc/apache2/conf.d/charset e modificarlo in modo che contenga AddDefaultCharset ISO-8859-1.
Creazione di un certificato SSL self-signed per Apache2
openssl req -new -x509 -days 3650 -nodes -out server.crt -keyout server.key chmod 400 server.key
I due files server.crt e server.key vanno definiti nella config di apache.
Configurazione di apache 1.3 con mod_ssl
Dopo aver installato apache 1.3 e mod_ssl, per avere il supporto per http e https occorre come minimo una configurazione con due virtualhosts, cosi`:
Listen 80 Listen 443 NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> </VirtualHost> <VirtualHost *:443> # Configurazione SSL SSLEngine on SSLCertificateFile /etc/apache/ssl/server.crt SSLCertificateKeyFile /etc/apache/ssl/server.key </VirtualHost>
Questa ovviamente e` superminimale, ma funziona se si ha di fatto un solo host (niente virtuali davvero) che vuole fare sia http che https.