Ricerca nel sito web

Come configurare host virtuali basati su nome e IP (blocchi server) con NGINX


In un periodo di tempo relativamente breve da quando è stato sviluppato e reso disponibile (poco più di 10 anni), Nginx ha registrato una crescita sostenuta e costante tra i server web grazie alle sue elevate prestazioni e al basso utilizzo della memoria.

Poiché Nginx è un software gratuito e open source, è stato adottato da migliaia di amministratori di server Web in tutto il mondo, non solo nei server Linux e *nix, ma anche in Microsoft Windows.

Da non perdere: hosting virtuale Apache basato su nome e IP

Per quelli di noi più abituati ad Apache, Nginx potrebbe avere una curva di apprendimento un po' ripida (almeno nel mio caso) ma sicuramente ripaga una volta impostati un paio di siti e inizia a visualizzare le statistiche sul traffico e sull'utilizzo delle risorse.

In questo articolo spiegheremo come utilizzare Nginx per configurare hosting virtuale basato sul nome e basato su IP in CentOS/RHEL 7 e Debian 8 e derivate, a partire da Ubuntu 15.04 e suoi derivati.

Il nostro scenario di test per questo articolo è il seguente:

  1. Sistema operativo: server Debian 8 Jessie [IP 192.168.0.25]
  2. Gateway: router [IP 192.168.0.1]
  3. Server Web: Nginx 1.6.2-5
  4. Domini fittizi: www.tecmintlovesnginx.com e www.nginxmeanspower.com.

Installazione del server Web Nginx

Se non lo hai già fatto, installa Nginx prima di procedere ulteriormente. Se hai bisogno di aiuto per iniziare, una rapida ricerca di nginx in questo sito restituirà diversi articoli su questo argomento. Fai clic sull'icona della lente di ingrandimento nella parte superiore di questa pagina e cerca la parola chiave nginx. Se non sai come cercare articoli in questo sito, non preoccuparti, qui abbiamo aggiunto collegamenti agli articoli nginx, basta sfogliarlo e installarlo secondo le rispettive distribuzioni Linux.

  1. Installa e compila Nginx dai sorgenti in RHEL/CentOS 7
  2. Installa il server Web Nginx su Debian 8
  3. Installa Nginx con MariaDB e PHP/PHP-FPM su Fedora 23
  4. Installa il server Web Nginx su server/desktop Ubuntu 15.10
  5. Proteggi con password le directory dei siti Web Nginx

Quindi preparati a continuare con il resto di questo tutorial.

Creazione di host virtuali basati sul nome in Nginx

Come sicuramente già saprai, un host virtuale è un sito Web servito da Nginx in un singolo VPS cloud o server fisico. Tuttavia, nella documentazione di Nginx troverai invece il termine "blocchi server", ma sono fondamentalmente la stessa cosa chiamata con nomi diversi.

Il primo passo per configurare gli host virtuali è creare uno o più blocchi server (nel nostro caso ne creeremo due, uno per ogni dominio fittizio) nel file di configurazione principale (/etc/nginx/nginx.conf) o all'interno di /etc/nginx/sites-available.

Sebbene il nome dei file di configurazione in questa directory (sites-available) possa essere impostato come preferisci, è una buona idea utilizzare il nome dei domini e inoltre abbiamo scelto di aggiungere .conf per indicare che si tratta di file di configurazione.

Questi blocchi server possono essere relativamente complessi, ma nella loro forma base sono costituiti dal seguente contenuto:

In /etc/nginx/sites-available/tecmintlovesnginx.com.conf:

server {  
    listen       80;  
    server_name  tecmintlovesnginx.com www.tecmintlovesnginx.com;
    access_log  /var/www/logs/tecmintlovesnginx.access.log;  
    error_log  /var/www/logs/tecmintlovesnginx.error.log error; 
        root   /var/www/tecmintlovesnginx.com/public_html;  
        index  index.html index.htm;  
}

In /etc/nginx/sites-available/nginxmeanspower.com.conf:

server {  
    listen       80;  
    server_name  nginxmeanspower.com www.nginxmeanspower.com;
    access_log  /var/www/logs/nginxmeanspower.access.log;  
    error_log  /var/www/logs/nginxmeanspower.error.log error;
    root   /var/www/nginxmeanspower.com/public_html;  
    index  index.html index.htm;  
}

Puoi utilizzare i blocchi precedenti per iniziare a configurare i tuoi host virtuali oppure puoi creare i file con lo scheletro di base da /etc/nginx/sites-available/default (Debian ) o /etc/nginx/nginx.conf.default (CentOS).

Una volta copiato, modifica i relativi permessi e proprietà:

chmod 660  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chmod 660  /etc/nginx/sites-available/nginxmeanspower.com.conf

Debian e derivati

chgrp www-data  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp www-data  /etc/nginx/sites-available/nginxmeanspower.com.conf

CentOS e RHEL

chgrp nginx  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp nginx  /etc/nginx/sites-available/nginxmeanspower.com.conf

Al termine, dovresti eliminare il file di esempio o rinominarlo in qualcos'altro per evitare confusione o conflitti.

Tieni presente che dovrai anche creare la directory per i log (/var/www/logs) e fornire all'utente Nginx (nginx o www-data , a seconda che si utilizzi CentOS o Debian) i permessi di lettura e scrittura su di esso:

mkdir /var/www/logs
chmod -R 660 /var/www/logs
chgrp <nginx user> /var/www/logs

Gli host virtuali devono ora essere abilitati creando un collegamento simbolico a questo file nella directory abilitata ai siti:

ln -s /etc/nginx/sites-available/tecmintlovesnginx.com.conf /etc/nginx/sites-enabled/tecmintlovesnginx.com.conf
ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.conf

Successivamente, crea un file html di esempio denominato index.html all'interno di /var/www//public_html per ciascuno degli host virtuali (sostituisci secondo necessità). Modificare il seguente codice secondo necessità:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Tecmint loves Nginx</title>
  </head>
  <body>
  <h1>Tecmint loves Nginx!</h1>
  </body>
</html>

Infine, testa la configurazione di Nginx e avvia il server web. Se sono presenti errori nella configurazione, ti verrà richiesto di correggerli:

nginx -t && systemctl start nginx

e aggiungi le seguenti voci al tuo file /etc/hosts nel tuo computer locale come strategia di base per la risoluzione dei nomi:

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

Quindi avvia un browser web e vai agli URL sopra elencati:

Per aggiungere più host virtuali in Nginx, basta ripetere i passaggi sopra descritti tutte le volte necessarie.

Host virtuali basati su IP in Nginx

A differenza degli host virtuali basati sul nome in cui tutti gli host sono accessibili tramite lo stesso indirizzo IP, gli host virtuali basati su IP richiedono un IP:porta diverso > combinazione ciascuno.

Ciò consente al server web di restituire siti diversi a seconda dell'indirizzo IP e della porta su cui viene ricevuta la richiesta. Poiché gli host virtuali basati su nome ci offrono il vantaggio di condividere un indirizzo IP e una porta, sono lo standard per i server Web generici e dovrebbero essere la configurazione preferita a meno che la versione installata di Nginx non supporti l'indicazione del nome del server (SNI), sia perché è una versione VERAMENTE obsoleta, sia perché è stato compilato senza l'opzione di compilazione –with-http_ssl_module.

Se,

nginx -V

non restituisce le opzioni evidenziate di seguito:

dovrai aggiornare la tua versione di Nginx o ricompilarla, a seconda del metodo di installazione originale. Per compilare Nginx, seguire l'articolo seguente:

  1. Installa e compila Nginx dai sorgenti in RHEL/CentOS 7

Supponendo che siamo a posto, dobbiamo notare che un altro prerequisito per gli host virtuali basati su IP è la disponibilità di IP separati, sia assegnandoli a interfacce di rete distinte, sia attraverso l'uso di indirizzi virtuali IP (noto anche come aliasing IP).

Per eseguire l'aliasing IP in Debian (assumendo che tu stia utilizzando eth0), modifica /etc/network/interfaces come segue:

Debian e derivati

auto eth0:1
iface eth0:1 inet static
        address 192.168.0.25
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
auto eth0:2
iface eth0:2 inet static
        address 192.168.0.26
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

Nell'esempio sopra creiamo due NIC virtuali da eth0: eth0:1 (192.168.0.25) e eth0:2 (192.168.0.26).

CentOS e RHEL

In CentOS, rinomina /etc/sysconfig/network-scripts/ifcfg-enp0s3 come ifcfg-enp0s3:1 e crea una copia come ifcfg-enp0s3:2, quindi basta modificare rispettivamente le seguenti righe:

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

E

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

Una volta terminato, riavvia il servizio di rete:

systemctl restart networking

Successivamente, apporta le seguenti modifiche ai blocchi server precedentemente definiti in questo articolo:

In /etc/nginx/sites-available/tecmintlovesnginx.com.conf:

listen 192.168.0.25:80

In /etc/nginx/sites-available/nginxmeanspower.com.conf:

listen 192.168.0.26:80

Infine, riavvia Nginx affinché le modifiche abbiano effetto.

systemctl restart nginx

e non dimenticare di aggiornare di conseguenza il tuo /etc/hosts locale:

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Pertanto, ogni richiesta effettuata a 192.168.0.25 e 192.168.0.26 sulla porta 80 restituirà tecmintlovesnginx.com e nginxmeanspower.com, rispettivamente:

Come puoi vedere nelle immagini sopra, ora hai due host virtuali basati su IP che utilizzano l'unica scheda NIC nel tuo server con due alias IP diversi.

Riassunto

In questo tutorial abbiamo spiegato come configurare host virtuali basati sul nome e basati su IP in Nginx. Anche se probabilmente vorrai utilizzare la prima opzione, è importante sapere che l'altra opzione è ancora disponibile se ne hai bisogno: assicurati solo di prendere questa decisione dopo aver considerato i fatti delineati in questa guida.

Inoltre, potresti voler aggiungere ai segnalibri i documenti Nginx poiché è utile e utile farvi riferimento spesso durante la creazione di blocchi server (ecco qua – stiamo parlando nella lingua Nginx ora) e la loro configurazione. Non crederai a tutte le opzioni disponibili per configurare e ottimizzare questo eccezionale server web.

Come sempre, non esitate a scriverci utilizzando il modulo sottostante se avete domande o commenti su questo articolo. Non vediamo l'ora di sentire la tua opinione e il tuo feedback su questa guida è il benvenuto.