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 a causa delle sue elevate prestazioni e del basso utilizzo della memoria.

Hosting virtuale basato su nome e IP Nginx
Hosting virtuale basato su nome e IP Nginx

Da 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 basato su nome e IP di Apache

Per quelli di noi più abituati Apache, Nginx potrebbe avere una curva di apprendimento un po' ripida (almeno questo era il mio caso) ma sicuramente ripaga una volta che hai impostato un paio di siti e inizi a vedere le statistiche sul traffico e sull'utilizzo delle risorse.

In questo articolo spiegheremo come utilizzare Nginx per la configurazione basato sul nome e basato su ip hosting virtuale in CentOS/RHEL 7 server e Debian 8 e derivati, a partire da Ubuntu 15.04 e dai suoi spin-off.

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. Fare 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 andare e installarlo secondo le rispettive distribuzioni Linux.

  1. Installa e compila Nginx dai sorgenti in RHEL/CentOS 7
  2. Installa Nginx Web Server su Debian 8
  3. Installa Nginx con MariaDB e PHP/PHP-FPM su Fedora 23
  4. Installa Nginx Web Server su Ubuntu 15.10 Server/Desktop
  5. Proteggi con password le directory del sito Web Nginx

Quindi preparati a continuare con il resto di questo tutorial.

Creazione di host virtuali basati sul nome in Nginx

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

Il primo passo per configurare 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 dentro /etc/nginx/sites-available.

Sebbene il nome dei file di configurazione in questa directory (siti-disponibili) può essere impostato su quello che vuoi, è una buona idea usare il nome dei domini, e inoltre abbiamo scelto di aggiungere il .conf estensione 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:

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

server { ascolta 80; nome_server tecmintlovesnginx.com www.tecmintlovesnginx.com; access_log /var/www/logs/tecmintlovesnginx.access.log; error_log /var/www/logs/tecmintlovesnginx.error.log errore; root /var/www/tecmintlovesnginx.com/public_html; indice index.html index.htm; }

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

server { ascolta 80; nome_server nginxmeanspower.com www.nginxmeanspower.com; access_log /var/www/logs/nginxmeanspower.access.log; error_log /var/www/logs/nginxmeanspower.error.log errore; root /var/www/nginxmeanspower.com/public_html; indice index.html index.htm; }

Puoi usare i blocchi sopra 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 copiati, modifica i loro 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. 

Quando hai finito, 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 dare all'utente Nginx (nginx o www-dati, a seconda che tu stia eseguendo CentOS o Debian) leggi e scrivi i permessi su di esso:

# mkdir /var/www/logs. # chmod -R 660 /var/www/logs. # chgrp  /var/www/logs. 

Gli host virtuali devono ora essere abilitati creando un collegamento simbolico a questo file nella directory abilitata per i 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. 

Quindi, crea un file html di esempio denominato index.html dentro /var/www//public_html per ciascuno degli host virtuali (sostituisci come necessario). Modificare il seguente codice secondo necessità:

Tecmint ama Nginx

Tecmint ama Nginx!

Infine, prova la configurazione di Nginx e avvia il server web. Se ci sono errori nella configurazione, ti verrà chiesto di correggerli:

# nginx -t && systemctl avvia nginx. 
Controlla la configurazione di Nginx
Controlla la configurazione di Nginx

e aggiungi le seguenti voci al tuo /etc/hosts file nella tua macchina 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:

Controlla gli host virtuali basati sul nome Nginx
Controlla gli host virtuali basati sul nome Nginx

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

Host virtuali basati su IP in Nginx

Al contrario di basato sul nome host virtuali in cui tutti gli host sono accessibili tramite lo stesso indirizzo IP, Basato su IP gli host virtuali richiedono un diverso IP: porta 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 danno il vantaggio di condividere un indirizzo IP e una porta, sono lo standard per server Web generici e dovrebbe essere la configurazione preferita a meno che la versione installata di Nginx non lo faccia sostegno Indicazione del nome del server (SNI), sia perché è una versione VERAMENTE obsoleta, sia perché è stata compilata senza il –con-http_ssl_module opzione di compilazione.

Se,

# nginx -V. 

non restituisce le opzioni evidenziate di seguito:

Controlla la versione e i moduli di Nginx
Controlla la versione e i moduli di Nginx

dovrai aggiornare la tua versione di Nginx o ricompilarla, a seconda del metodo di installazione originale. Per compilare Nginx, segui 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 Basato su IP host virtuali è la disponibilità di IP separati, assegnandoli a interfacce di rete distinte o tramite l'uso di IP virtuali (noto anche come aliasing IP).

Per eseguire l'aliasing IP in Debian (supponendo che tu stia usando eth0), modificare /etc/network/interfaces come segue:

Debian e derivati

automatico eth0:1. iface eth0:1 inet indirizzo statico 192.168.0.25 netmask 255.255.255.0 rete 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1. automatico eth0:2. iface eth0:2 inet indirizzo statico 192.168.0.26 netmask 255.255.255.0 rete 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 fare una copia come ifcfg-enp0s3:2, e poi cambia semplicemente le seguenti righe, rispettivamente:

DISPOSITIVO="enp0s3:1" IPADDR=192.168.0.25.

e

DISPOSITIVO="enp0s3:2" IPADDR=192.168.0.26.

Al termine, riavvia il servizio di rete:

# systemctl riavvia la rete. 

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

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

ascolta 192.168.0.25:80. 

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

ascolta 192.168.0.26:80. 

Infine, riavvia Nginx per rendere effettive le modifiche.

# systemctl riavvia nginx. 

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

192.168.0.25 tecmintlovesnginx.com. 192.168.0.26 nginxmeanspower.com. 

Così, ogni richiesta fatta a 192.168.0.25 e 192.168.0.26 sul porto 80 tornerà tecmintlovesnginx.com e nginxmeanspower.com, rispettivamente:

Controlla l'host virtuale basato su IP Nginx
Controlla l'host virtuale basato su IP Nginx

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

Riepilogo

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

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

Come sempre, non esitare a scriverci una riga utilizzando il modulo sottostante se hai domande o commenti su questo articolo. Non vediamo l'ora di sentirti e i tuoi commenti su questa guida sono i benvenuti.

Teachs.ru