Apache tip & tricks: differenze tra le versioni
Nessun oggetto della modifica |
|||
| (12 versioni intermedie di 3 utenti non mostrate) | |||
| Riga 1: | Riga 1: | ||
== Abilitare modulo SSL == | == Certificati SSL == | ||
=== Abilitare modulo SSL === | |||
Di default il modulo non è abilitato<br/> | Di default il modulo non è abilitato<br/> | ||
<code>sudo a2enmod ssl</code> | <code>sudo a2enmod ssl</code> | ||
== Richiesta CSR == | === Richiesta CSR === | ||
Genera un file <code>.csr</code> e un file <code>.key</code> che sono la richiesta di certificato per il server in questione e la chiave privata. | Genera un file <code>.csr</code> e un file <code>.key</code> che sono la richiesta di certificato per il server in questione e la chiave privata. | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| Riga 10: | Riga 11: | ||
Importante, alla domanda sul '''Common Name''' specificare il NOME DEL DOMINIO (es <code>designbestmagazine.com</code>) | Importante, alla domanda sul '''Common Name''' specificare il NOME DEL DOMINIO (es <code>designbestmagazine.com</code>) | ||
== | === Gestione dei certificati (key, bundle) === | ||
Per creare un VirtualHost con certificato autentico aggiungere un file dentro alla cartella <code>/etc/apache2/sites-available</code> con la configurazione personalizzata che utilizzi i certificati giusti.<br/><br/> | Per creare un VirtualHost con certificato autentico aggiungere un file dentro alla cartella <code>/etc/apache2/sites-available</code> con la configurazione personalizzata che utilizzi i certificati giusti.<br/><br/> | ||
| Riga 25: | Riga 26: | ||
== Configurazione del Virtualhost == | ==== Configurazione del Virtualhost ==== | ||
Il virtualhost cambia '''la porta''' e aggiunge le direttive '''SSLEngine''', '''SSLCertificateFile''' e '''SSLCertificateKeyFile'''.<br/> | Il virtualhost cambia '''la porta''' e aggiunge le direttive '''SSLEngine''', '''SSLCertificateFile''' e '''SSLCertificateKeyFile'''.<br/> | ||
È possibile configurare un '''redirect ''http'' => ''https''''' direttamente dal virtualhost.<br/><br/> | È possibile configurare un '''redirect ''http'' => ''https''''' direttamente dal virtualhost.<br/><br/> | ||
| Riga 65: | Riga 66: | ||
SSLCertificateKeyFile /etc/apache2/ssl/designbest.com_private_key.key | SSLCertificateKeyFile /etc/apache2/ssl/designbest.com_private_key.key | ||
ErrorLog ${APACHE_LOG_DIR}/blog.designbest.com | ErrorLog ${APACHE_LOG_DIR}/blog.designbest.com.error.log | ||
CustomLog ${APACHE_LOG_DIR}/blog.designbest.com | CustomLog ${APACHE_LOG_DIR}/blog.designbest.com.access.log combined | ||
</VirtualHost> | </VirtualHost> | ||
</IfModule> | </IfModule> | ||
</syntaxhighlight> | |||
=== Let’s Encrypt === | |||
Vedere la pagina dedicata<br/> | |||
[[Certificati Lets'Encrypt]] | |||
== Basic Authentication == | |||
Per fare una '''basic authentication''' bisogna utilizzare il comando <code>htpasswd</code> che crea un file con i dati di utente e password.<br/> | |||
Può essere updatato per aggiungere altri utenti. | |||
<syntaxhighlight lang="bash"> | |||
# Prima volta con opzione -c | |||
sudo htpasswd -c /var/www/auth/.htpasswd nomeutente1 | |||
#Per aggiungere altri utenti senza -c | |||
sudo htpasswd /var/www/auth/.htpasswd nomeutente2 | |||
</syntaxhighlight> | |||
<br/> | |||
Il file viene richiamato all'interno di un ''virtualhost'' con i seguenti comandi: | |||
<syntaxhighlight lang="bash"> | |||
AuthName "Dialog prompt" | |||
AuthType Basic | |||
AuthUserFile /var/www/auth/.htpasswd | |||
Require valid-user | |||
</syntaxhighlight> | |||
Che possono essere inseriti nel file <code>.htaccess</code> oppure direttamente nel ''virtualhost'' nella sezione <code>Location</code> | |||
<syntaxhighlight lang="bash"> | |||
<Location /> | |||
AuthName "Dialog prompt" | |||
AuthType Basic | |||
AuthUserFile /var/www/auth/.htpasswd | |||
Require valid-user | |||
</Location> | |||
</syntaxhighlight> | |||
<br/> | |||
Se si vuole cambiare la password di un utente basta lanciare di nuovo il comando senza l'opzione <code>-c</code> specificando l'utente già esistente.<br/> | |||
Non è possibile settare più password per un singolo utente, in quel caso creare un file diverso come è stato fatto per magazine e outlet su merida. | |||
== Configurare multiple versioni di PHP == | |||
Con PHP-FPM è possibile avere siti che utilizzano differenti versioni di PHP, specificandolo nel virtualhost.<br/> | |||
Ecco la guida [[PHP FPM - Configurare multiple versioni di PHP]] | |||
== Modificare la versione default di PHP-FPM == | |||
Per quanto riguarda '''php-fpm''' , dopo aver installato l'ultima versione (es. ''8.4'' ) | |||
<syntaxhighlight lang="bash"> | |||
# Settare l'alternativa di default | |||
sudo update-alternatives --config php | |||
#sudo update-alternatives --set php /usr/bin/php8.4 | |||
</syntaxhighlight> | |||
Comunicarlo ad Apache | |||
<syntaxhighlight lang="bash"> | |||
sudo a2enconf php8.4-fpm | |||
sudo systemctl reload apache2.service | |||
</syntaxhighlight> | |||
== Reverse Proxy == | |||
Apache può essere configurato come ''Reverse Proxy'' per soddisfare le richieste degli applicativi che runnano sotto un proprio server (es. '''node.js''' o '''.net core'''). | |||
Ecco una configurazione d'esempio: | |||
<syntaxhighlight lang="bash"> | |||
<VirtualHost *:80> | |||
ServerName sqlchat.dbdemo47.com | |||
Redirect / https://%{SERVER_NAME}%{REQUEST_URI} | |||
</VirtualHost> | |||
<VirtualHost *:443> | |||
ServerAdmin info@designbest.com | |||
ServerName sqlchat.dbdemo47.com | |||
ProxyPass / http://localhost:3000/ | |||
ProxyPassReverse / http://localhost:3000/ | |||
</VirtualHost> | |||
</syntaxhighlight> | |||
Per poter utilizzare Apache come reverse proxy è necessario abilitare i moduli: | |||
<syntaxhighlight lang="bash"> | |||
sudo a2enmod proxy | |||
sudo a2enmod proxy_http | |||
sudo systemctl restart apache2 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Versione attuale delle 16:30, 8 apr 2025
Certificati SSL
[modifica]Abilitare modulo SSL
[modifica]Di default il modulo non è abilitato
sudo a2enmod ssl
Richiesta CSR
[modifica]Genera un file .csr e un file .key che sono la richiesta di certificato per il server in questione e la chiave privata.
openssl req -new -newkey rsa:2048 -nodes -keyout designbestmagazine.com_private_key.key -out designbestmagazine.com.csr
Importante, alla domanda sul Common Name specificare il NOME DEL DOMINIO (es designbestmagazine.com)
Gestione dei certificati (key, bundle)
[modifica]Per creare un VirtualHost con certificato autentico aggiungere un file dentro alla cartella /etc/apache2/sites-available con la configurazione personalizzata che utilizzi i certificati giusti.
Esempio pratico:
- Copiare i file del certificato (crt e key) + il certificato intermedio nella cartella
/etc/apache2/ssl/. N.B. Se si dispone del file .cer basta rinominare l'estensione in .crt - Unire certificato e certificato intermedio in un unico file con il comando
cat nomesito.com_ssl_certificate.crt nomesito.com_ssl_certificate_intermediate.crt >> nomesito.com_ssl_certificate_bundle.crt
Ricordarsi di mettere in /etc/apache2/ssl/ i tre file
nomesito.com_ssl_certificate.crtnomesito.com_private_key.keynomesito.com_ssl_certificate_bundle.crt
Configurazione del Virtualhost
[modifica]Il virtualhost cambia la porta e aggiunge le direttive SSLEngine, SSLCertificateFile e SSLCertificateKeyFile.
È possibile configurare un redirect http => https direttamente dal virtualhost.
Esempio pratico:
#
# blog.designbest.com
#
<VirtualHost *:80>
ServerName blog.designbest.com
Redirect / https://blog.designbest.com/
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin s.vincenzi@webmobili.it
ServerName blog.designbest.com
DirectoryIndex index.html index.htm index.php
DocumentRoot /var/www/blog.designbest.com/
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/blog.designbest.com/>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/designbest.com_ssl_certificate_bundle.crt
SSLCertificateKeyFile /etc/apache2/ssl/designbest.com_private_key.key
ErrorLog ${APACHE_LOG_DIR}/blog.designbest.com.error.log
CustomLog ${APACHE_LOG_DIR}/blog.designbest.com.access.log combined
</VirtualHost>
</IfModule>
Let’s Encrypt
[modifica]Vedere la pagina dedicata
Certificati Lets'Encrypt
Basic Authentication
[modifica]Per fare una basic authentication bisogna utilizzare il comando htpasswd che crea un file con i dati di utente e password.
Può essere updatato per aggiungere altri utenti.
# Prima volta con opzione -c
sudo htpasswd -c /var/www/auth/.htpasswd nomeutente1
#Per aggiungere altri utenti senza -c
sudo htpasswd /var/www/auth/.htpasswd nomeutente2
Il file viene richiamato all'interno di un virtualhost con i seguenti comandi:
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /var/www/auth/.htpasswd
Require valid-user
Che possono essere inseriti nel file .htaccess oppure direttamente nel virtualhost nella sezione Location
<Location />
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /var/www/auth/.htpasswd
Require valid-user
</Location>
Se si vuole cambiare la password di un utente basta lanciare di nuovo il comando senza l'opzione -c specificando l'utente già esistente.
Non è possibile settare più password per un singolo utente, in quel caso creare un file diverso come è stato fatto per magazine e outlet su merida.
Configurare multiple versioni di PHP
[modifica]Con PHP-FPM è possibile avere siti che utilizzano differenti versioni di PHP, specificandolo nel virtualhost.
Ecco la guida PHP FPM - Configurare multiple versioni di PHP
Modificare la versione default di PHP-FPM
[modifica]Per quanto riguarda php-fpm , dopo aver installato l'ultima versione (es. 8.4 )
# Settare l'alternativa di default
sudo update-alternatives --config php
#sudo update-alternatives --set php /usr/bin/php8.4
Comunicarlo ad Apache
sudo a2enconf php8.4-fpm
sudo systemctl reload apache2.service
Reverse Proxy
[modifica]Apache può essere configurato come Reverse Proxy per soddisfare le richieste degli applicativi che runnano sotto un proprio server (es. node.js o .net core).
Ecco una configurazione d'esempio:
<VirtualHost *:80>
ServerName sqlchat.dbdemo47.com
Redirect / https://%{SERVER_NAME}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
ServerAdmin info@designbest.com
ServerName sqlchat.dbdemo47.com
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
Per poter utilizzare Apache come reverse proxy è necessario abilitare i moduli:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo systemctl restart apache2