Prerequisiti
Installare Apache2
Configurazione Apache2
La prima cosa da fare è cambiare la porta di default utilizzata da Apache2, quindi utilizzeremo la porta 8000 invece di 80. Da terminale dare questo comando:
sudo nano /etc/apache2/ports.conf
Cerchiamo la riga:
Listen 80
Cambiamo la porta:
Listen 8000
Salvare e chiudere il file.
Adesso cambiamo la porta nel VirtualHost. Sempre da terminale:
sudo nano /etc/apache2/sites-available/000-default.conf
Cerchiamo:
<VirtualHost *:80>
Cambiamo la porta:
<VirtualHost *:8000>
Salvare e chiudere il file.
Possiamo installare un modulo di Apache2 libapache2-mod-rpaf che ha il compito di cambiare l'indirizzo remoto del client visibile ad altri moduli Apache.
sudo apt-get -y install libapache2-mod-rpaf
Riavviamo Apache2:
sudo service apache2 restart
Installazione e configurazione di Nginx
Per maggiori dettagli leggere la guida su Nginx
Da terminale:
sudo apt install nginx
Attiviamo l'avvio automatico di Nginx:
sudo systemctl enable nginx.service
Riavviamo Nginx:
sudo service nginx restart
Troveremo delle configurazioni di default del proxy nel seguente file:
sudo nano /etc/nginx/proxy_params
Aggiungiamo le seguenti configurazioni standard per il proxy:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 100M;
client_body_buffer_size 1m;
proxy_intercept_errors on;
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 256 16k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 0;
proxy_read_timeout 300;
Salvare e chiudere il file.
Apriamo il file di configurazione di Nginx:
sudo nano /etc/nginx/sites-available/default
Questa è una configurazione di base che ci permette di utilizzare Nginx come reverse proxy di Apache2:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
}
}
Riavviamo Nginx
sudo service nginx reload
Nginx è più veloce di Apache nel servire i file statici come Js e CSS, quindi configuriamo Nginx in modo tale che serva direttamente i file statici e che invii le richieste di PHP ad Apache:
server {
listen 80;
server_name default_server;
root /var/www/html;
index index.php index.htm index.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
}
location ~* \.(js|css|jpg|jpeg|gif|png|svg|ico|pdf|html|htm)$ {
expires 30d;
}
}
Salvare e chiudere il file.
Verifichiamo la corretta configurazione di Nginx:
sudo nginx -t
Quindi riavviamo Nginx se non abbiamo commesso errori si riavvierà senza problemi:
sudo service nginx restart