Introduzione

Se il vostro intento è installare Nginx come reverse proxy di Apache2 su di un server in remoto continuate a leggere, altrimenti se volete installare Nginx sul vostro computer locale saltate il primo paragrafo "Connessione al Server" e leggere il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno della password per l'autenticazione.

Per connettersi al server come utente root digitare questo comando:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare anche il primo parametro:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

Siete ora connessi al vostro server, siete pronti per iniziare l'installazione di Nginx come reverse proxy.

Prerequisiti

Installazione di Apache su Debian 10.

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 127.0.0.1:80>

Cambiamo la porta:

<VirtualHost 127.0.0.1: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-get -y 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, se non risultano errori, riavviare Nginx:

sudo service nginx reload

L'installazione di Nginx come reverse proxy di Apache2 su Debian 10 è terminata.