Apache tip & tricks: differenze tra le versioni

Da Webmobili Wiki.
Nessun oggetto della modifica
Riga 113: Riga 113:
Con PHP-FPM è possibile avere siti che utilizzano differenti versioni di PHP, specificandolo nel virtualhost.<br/>
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]]
Ecco la guida [[PHP FPM - Configurare multiple versioni di PHP]]
== 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>

Versione delle 10:29, 15 gen 2025

Certificati SSL

Abilitare modulo SSL

Di default il modulo non è abilitato
sudo a2enmod ssl

Richiesta CSR

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)

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.crt
  • nomesito.com_private_key.key
  • nomesito.com_ssl_certificate_bundle.crt


Configurazione del Virtualhost

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

Vedere la pagina dedicata
Certificati Lets'Encrypt

Basic Authentication

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

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

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:

<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