Nginx o "engine-x " è un server Web ad alte prestazioni con un utilizzo di memoria ridotto, creato da Igor Sysoev nel 2002. Nginx non è solo un server Web, può essere utilizzato come proxy inverso per molti protocolli come HTTP, HTTPS, POP3, SMTP e IMAP e anche come bilanciatore del carico e cache HTTP.
Apache è il software per server Web più popolare gestito dalla comunità open source sotto Apache Software Foundation. Sono disponibili molti moduli aggiuntivi per apache come il supporto WebDav o firewall di applicazioni Web come mod_security e supporta molti linguaggi di programmazione Web come Perl, Python, PHP tramite moduli nativi o interfacce cgi, fcgi e FPM.
In questo tutorial, installerò e configurerò Nginx come proxy inverso di memorizzazione nella cache per un server Web Apache su Ubuntu 15.10, Nginx viene utilizzato come front-end e Apache come back-end. Nginx verrà eseguito sulla porta 80 per rispondere alle richieste di un utente/browser, la richiesta verrà quindi inoltrata al server Apache in esecuzione sulla porta 8080.
Fase 1:installa Apache e PHP
Accedi al tuo server Ubuntu con SSH e diventa utente root eseguendo:
sudo su
Quindi installa Apache con il comando apt-get:
apt-get install apache2
Una volta installato Apache, dobbiamo installare PHP come modulo Apache per questo tutorial:
apt-get install php5 php5-mysql libapache2-mod-php5
Fase 2 - Configura Apache e PHP
Per impostazione predefinita, apache è in ascolto sulla porta 80. Dobbiamo configurare apache per l'esecuzione sulla porta 8080 per la nostra configurazione del proxy poiché la porta 80 verrà utilizzata da nginx in seguito.
Se desideri modificare la porta per il server web apache, devi modificare il file di configurazione di apache "/etc/apache2/ports.conf", quindi procedere con la configurazione dell'host virtuale in "/etc/apache2/sites-available/ " directory.
Per prima cosa cambia la porta per apache in 8080 modificando il file "ports.conf" con l'editor vim:
vim /etc/apache2/ports.conf
In linea 5 , cambia la porta 80 in 8080.
Listen 8080
Salva ed esci.
Ora vai alla directory virtualhost e modifica il file "000-default.conf" :
cd sites-available/
vim 000-default.conf
Assicurati che la tua configurazione sia la stessa di seguito:
<VirtualHost *:8080> ServerName www.reverse.com ServerAlias reverse.com ServerAdmin [email protected] DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Salva ed esci.
Quindi, testa la configurazione e riavvia Apache:
apachectl configtest
systemctl restart apache2
Infine verifichiamo che apache e php funzionino. Crea un nuovo file con il nome "info.php" nella directory "/var/www/html/".
cd /var/www/html/
echo "<?php phpinfo(); ?>" > info.php
Visita il tuo sito www.reverse.com:8080/info.php .
Il risultato dovrebbe essere simile allo screenshot sopra.
Passaggio 3:installa Nginx
Installa Nginx con il seguente comando apt-get:
apt-get install nginx
Passaggio 4 - Configura Nginx
Una volta installato Nginx, configura Nginx in modo che agisca come proxy inverso per il server Web Apache in esecuzione sulla porta 8080.
Vai alla directory di configurazione di nginx e modifica il file "nginx.conf":
cd /etc/nginx/
vim nginx.conf
Abilita la compressione Gzip per Nginx decommentando le righe gzip:
# Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
il più importante è :
gzip su :per attivare la compressione gzip.
gzip_types :è l'elenco dei tipi MIME di cui vuoi attivare la compressione.
gzip_proxied qualsiasi :abilita la compressione per la richiesta proxy.
Proprio sotto le impostazioni di gzip, aggiungi queste impostazioni della cache del proxy:
# Proxy Cache Settings proxy_cache_path /var/cache levels=1:2 keys_zone=reverse_cache:60m inactive=90m max_size=1000m;
La directory per la cache del proxy è /var/cache.
livelli è una direttiva che dice a Nginx come viene salvata la cache nel file system.
key_zone è solo un nome della zona cache, puoi sceglierlo liberamente, ma non aggiungere caratteri speciali o spazi bianchi nel nome. Userò il nome "cache_reverse " qui.
Salva ed esci.
Ora configureremo un virtualhost nella directory "/etc/nginx/sites-available".
In questo tutorial creerò un nuovo file di configurazione di virtualhost chiamato "reverse.conf". Sono appena arrivato alla directory e crea un nuovo file con vim:
cd /etc/nginx/sites-available
vim reverse.conf
Incolla la configurazione di seguito:
server { listen 80; # Site Directory same in the apache virtualhost configuration root /var/www/html; index index.php index.html index.htm; # Domain server_name www.reverse.com reverse.com; location / { try_files $uri $uri/ /index.php; } # Reverse Proxy and Proxy Cache Configuration location ~ \.php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; # Cache configuration proxy_cache reverse_cache; proxy_cache_valid 3s; proxy_no_cache $cookie_PHPSESSID; proxy_cache_bypass $cookie_PHPSESSID; proxy_cache_key "$scheme$host$request_uri"; add_header X-Cache $upstream_cache_status; } # Enable Cache the file 30 days location ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ { proxy_cache_valid 200 120m; expires 30d; proxy_cache reverse_cache; access_log off; } # Disable Cache for the file type html, json location ~* .(?:manifest|appcache|html?|xml|json)$ { expires -1; } location ~ /\.ht { deny all; } }
Salva ed esci.
Quindi attiva la nuova configurazione di virtualhost:
ln -s /etc/nginx/sites-available/reverse.conf /etc/nginx/sites-enabled/
Infine testeremo la configurazione di nginx e riavvieremo nginx:
nginx -t
systemctl restart nginx
Nginx è configurato come proxy inverso ora. Puoi testarlo con curl:
curl -I www.reverse.com
Controllo cache:nessuna cache significa che index.html e tutti i file terminati con .html non verranno memorizzati nella cache.
Un altro test:
curl -I www.reverse.com/info.php
X-Cache:HIT significa che la pagina è servita dalla cache di Nginx.
Passaggio 5:configurazione della registrazione
In questo passaggio, configurerò Apache per registrare l'ip reale del visitatore anziché l'IP locale.
Installa il modulo apache "libapache2-mod-rpaf" e modifica il file di configurazione del modulo:
sudo apt-get install libapache2-mod-rpaf
cd /etc/apache2/mods-available/
vim rpaf.conf
Aggiungi l'IP del server alla riga 10 . Il mio server ha l'IP:192.168.1.108.
RPAFproxy_ips 127.0.0.1 192.168.1.108 ::1
Salva ed esci.
Ora riavvia Apache :
systemctl restart apache2
Prova rpaf visualizzando il log di accesso di Apache con il comando tail:
tail -f /var/log/apache2/access.log
Questo è tutto.
Nginx viene installato come proxy inverso davanti al server Web Apache. Se un visitatore richiede un file php, la richiesta verrà passata ad apache sulla porta 8080 e puoi vedere il vero visitatore ip sul file di log di apache.
Conclusione
Nginx è un server Web veloce e popolare con un utilizzo di memoria ridotto che può fungere da server Web e proxy inverso per il protocollo HTTP e HTTPS. Il proxy inverso Nginx per apache è una configurazione che utilizza Nginx come front-end e apache come back-end. Nginx gestisce la richiesta in arrivo dal browser e la passa al backend di Apache. In questo tutorial, abbiamo impostato una configurazione per nginx come cache http che memorizza nella cache le richieste e le immagini di file PHP.