Com configurar hosts virtuals basats en noms i IP (blocs de servidor) amb NGINX


En un període de temps relativament curt des que es va desenvolupar i es va posar a disposició (una mica més de 10 anys), Nginx ha experimentat un creixement sostingut i constant entre els servidors web a causa del seu alt rendiment i baix ús de memòria.

Com que Nginx és programari lliure i de codi obert, ha estat adoptat per milers d'administradors de servidors web a tot el món, no només als servidors Linux i *nix, sinó també a Microsoft Windows.

Per als que estem més acostumats a Apache, Nginx pot tenir una corba d'aprenentatge una mica pronunciada (almenys aquest va ser el meu cas), però sens dubte val la pena un cop configureu un parell de llocs i comenceu a veure les estadístiques de trànsit i ús de recursos.

En aquest article explicarem com utilitzar Nginx per configurar l'allotjament virtual basat en noms i IP als servidors CentOS/RHEL 7 i Debian 8 i derivats, començant per Ubuntu 15.04 i els seus derivats.

  1. Sistema operatiu: servidor Debian 8 Jessie [IP 192.168.0.25]
  2. Porta d'accés: encaminador [IP 192.168.0.1]
  3. Servidor web: Nginx 1.6.2-5
  4. Dominis ficticis: www.tecmintlovesnginx.com i www.nginxmeanspower.com.

Instal·lació del servidor web Nginx

Si encara no ho heu fet, instal·leu Nginx abans de continuar. Si necessiteu ajuda per començar, una cerca ràpida de nginx en aquest lloc tornarà diversos articles sobre aquest tema. Feu clic a la icona de la lupa a la part superior d'aquesta pàgina i cerqueu la paraula clau nginx. Si no sabeu com cercar articles en aquest lloc, no us preocupeu aquí, hem afegit enllaços als articles de nginx, només cal que aneu i instal·leu-lo segons les vostres distribucions de Linux respectives.

  1. Instal·leu i compileu Nginx des de fonts a RHEL/CentOS 7
  2. Instal·leu el servidor web Nginx a Debian 8
  3. Instal·leu Nginx amb MariaDB i PHP/PHP-FPM a Fedora 23
  4. Instal·leu el servidor web Nginx al servidor/escriptori Ubuntu 15.10
  5. Protecció amb contrasenya dels directoris de llocs web de Nginx

A continuació, prepareu-vos per continuar amb la resta d'aquest tutorial.

Creació d'amfitrions virtuals basats en noms a Nginx

Com estic segur que ja sabeu, un amfitrió virtual és un lloc web servit per Nginx en un únic servidor físic o VPS al núvol. Tanmateix, als documents de Nginx trobareu el terme \blocs de servidors\, però bàsicament són el mateix anomenat amb noms diferents.

El primer pas per configurar amfitrions virtuals és crear un o més blocs de servidor (en el nostre cas en crearem dos, un per a cada domini fictici) al fitxer de configuració principal (/etc/nginx/nginx.conf) o dins de /etc. /nginx/sites-available.

Tot i que el nom dels fitxers de configuració d'aquest directori (llocs disponibles) es pot configurar com vulgueu, és una bona idea utilitzar el nom dels dominis i, a més, hem optat per afegir el .conf per indicar que es tracta de fitxers de configuració.

Aquests blocs de servidor poden ser relativament complexos, però en la seva forma bàsica consten del contingut següent:

A /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;  
}

A /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;  
}

Podeu utilitzar els blocs anteriors per començar a configurar els vostres amfitrions virtuals, o podeu crear els fitxers amb l'esquelet bàsic des de /etc/nginx/sites-available/default (Debian) o /etc/nginx/nginx.conf.default ( CentOS).

Un cop copiat, canvieu-ne els permisos i la propietat:

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

Quan hàgiu acabat, hauríeu de suprimir el fitxer de mostra o canviar-lo per una altra cosa per evitar confusions o conflictes.

Tingueu en compte que també haureu de crear el directori per als registres (/var/www/logs) i donar a l'usuari de Nginx (nginx o www-data, depenent de si esteu executant CentOS o Debian). ) permisos de lectura i escriptura sobre ell:

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

Els amfitrions virtuals s'han d'habilitar ara creant un enllaç simbòlic a aquest fitxer al directori de llocs habilitats:

# 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

A continuació, creeu un fitxer html de mostra anomenat index.html dins de /var/www//public_html per a cadascun dels amfitrions virtuals (substituïu com a necessari). Modifiqueu el codi següent segons sigui necessari:

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

Finalment, proveu la configuració de Nginx i inicieu el servidor web. Si hi ha errors en la configuració, se us demanarà que els corregiu:

# nginx -t && systemctl start nginx

i afegiu les entrades següents al vostre fitxer /etc/hosts a la vostra màquina local com a estratègia bàsica de resolució de noms:

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

A continuació, inicieu un navegador web i aneu als URL indicats anteriorment:

Per afegir més amfitrions virtuals a Nginx, només heu de repetir els passos descrits anteriorment tantes vegades com sigui necessari.

Amfitrions virtuals basats en IP a Nginx

A diferència dels hosts virtuals basats en noms on tots els hosts són accessibles mitjançant la mateixa adreça IP, els hosts virtuals basats en IP requereixen una combinació IP:port diferent cadascun.

Això permet que el servidor web torni diferents llocs segons l'adreça IP i el port on es rep la sol·licitud. Com que els amfitrions virtuals basats en noms ens donen l'avantatge de compartir una adreça IP i un port, són l'estàndard per als servidors web de propòsit general i haurien de ser la configuració que escolliu tret que la vostra versió instal·lada de Nginx no admeti la indicació del nom del servidor (SNI). , ja sigui perquè és una versió REALMENT desactualitzada, o perquè es va compilar sense l'opció de compilació –with-http_ssl_module.

Si,

# nginx -V

no retorna les opcions destacades a continuació:

haureu d'actualitzar la vostra versió de Nginx o recompilar-la, depenent del vostre mètode d'instal·lació original. Per compilar Nginx, seguiu l'article següent:

  1. Instal·leu i compileu Nginx des de fonts a RHEL/CentOS 7

Suposant que estem a punt, hem de tenir en compte que un altre requisit previ per als amfitrions virtuals basats en IP és la disponibilitat d'IP separades, ja sigui assignant-les a diferents interfícies de xarxa o mitjançant l'ús d'IP virtuals (també conegudes com a alias d'IP). ).

Per dur a terme l'àlies d'IP a Debian (suposant que utilitzeu eth0), editeu /etc/network/interfaces de la següent manera:

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

A l'exemple anterior creem dues NIC virtuals a partir de eth0: eth0:1 (192.168.0.25) i eth0:2 (192.168.0.26).

A CentOS, canvieu el nom de /etc/sysconfig/network-scripts/ifcfg-enp0s3 com a ifcfg-enp0s3:1 i feu una còpia com a ifcfg-enp0s3:2, i després només canvieu les línies següents, respectivament:

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

i

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

Un cop fet, reinicieu el servei de xarxa:

# systemctl restart networking

A continuació, feu els canvis següents als blocs de servidor definits anteriorment en aquest article:

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

listen 192.168.0.25:80

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

listen 192.168.0.26:80

Finalment, reinicieu Nginx perquè els canvis tinguin efecte.

# systemctl restart nginx

i no oblideu actualitzar el vostre /etc/hosts local en conseqüència:

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Així, cada sol·licitud feta a 192.168.0.25 i 192.168.0.26 al port 80 retornarà tecmintlovesnginx.com i nginxmeanspower.com, respectivament:

Com podeu veure a les imatges anteriors, ara teniu dos amfitrions virtuals basats en IP que utilitzen l'únic NIC del vostre servidor amb dos àlies IP diferents.

Resum

En aquest tutorial hem explicat com configurar hosts virtuals basats en noms i IP a Nginx. Tot i que probablement voldreu utilitzar la primera opció, és important saber que l'altra opció encara hi és si la necessiteu; només assegureu-vos de prendre aquesta decisió després de considerar els fets descrits en aquesta guia.

A més, és possible que vulgueu marcar els documents de Nginx com a adreces d'interès, ja que val la pena consultar-los sovint mentre creeu blocs de servidors (així el teniu, ara estem parlant en llenguatge Nginx) i els configureu. No us creureu totes les opcions disponibles per configurar i ajustar aquest excel·lent servidor web.

Com sempre, no dubteu a enviar-nos una línia mitjançant el formulari següent si teniu cap pregunta o comentari sobre aquest article. Esperem rebre notícies vostres i els vostres comentaris sobre aquesta guia són benvinguts.