Hvordan sette opp navnebaserte og IP-baserte virtuelle verter (serverblokker) med NGINX


I løpet av en relativt kort periode siden den ble utviklet og gjort tilgjengelig (litt over 10 år), har Nginx opplevd en vedvarende og jevn vekst blant webservere på grunn av høy ytelse og lav minnebruk.

Siden Nginx er gratis og åpen kildekode-programvare, har den blitt tatt i bruk av tusenvis av webserveradministratorer over hele verden, ikke bare i Linux- og *nix-servere, men også i Microsoft Windows.

For de av oss som er mest vant til Apache, kan Nginx ha en noe bratt læringskurve (det var i alle fall mitt tilfelle), men det lønner seg absolutt når du setter opp et par nettsteder og begynner å se trafikk- og ressursbruksstatistikken.

I denne artikkelen vil vi forklare hvordan du bruker Nginx til å sette opp navnebasert og ip-basert virtuell hosting i CentOS/RHEL 7-servere og Debian 8 og derivater, og starter med Ubuntu 15.04 og dets spin-offs.

  1. Operativsystem: Debian 8 Jessie-server [IP 192.168.0.25]
  2. Gateway: Ruter [IP 192.168.0.1]
  3. Nettserver: Nginx 1.6.2-5
  4. Dummy-domener: www.tecmintlovesnginx.com og www.nginxmeanspower.com.

Installere Nginx Web Server

Hvis du ikke allerede har gjort det, installer Nginx før du fortsetter. Hvis du trenger hjelp til å komme i gang, vil et raskt søk etter nginx på denne siden returnere flere artikler om dette emnet. Klikk på forstørrelsesglassikonet øverst på denne siden og søk etter søkeordet nginx. Hvis du ikke vet hvordan du søker etter artikler på dette nettstedet, ikke bekymre deg her, vi har lagt til lenker til nginx-artiklene, bare gå gjennom og installer det i henhold til dine respektive Linux-distribusjoner.

  1. Installer og kompiler Nginx fra kilder i RHEL/CentOS 7
  2. Installer Nginx Web Server på Debian 8
  3. Installer Nginx med MariaDB og PHP/PHP-FPM på Fedora 23
  4. Installer Nginx Web Server på Ubuntu 15.10 Server/Desktop
  5. Passordbeskytt Nginx-nettstedkataloger

Så gjør deg klar til å fortsette med resten av denne opplæringen.

Opprette navnbaserte virtuelle verter i Nginx

Som jeg er sikker på at du allerede vet, er en virtuell vert et nettsted som betjenes av Nginx i en enkelt sky-VPS eller fysisk server. I Nginx-dokumentene vil du imidlertid finne begrepet \serverblokker\ i stedet, men de er i utgangspunktet det samme som kalles med forskjellige navn.

Det første trinnet for å sette opp virtuelle verter er å lage en eller flere serverblokker (i vårt tilfelle vil vi lage to, en for hvert dummy-domene) i hovedkonfigurasjonsfilen (/etc/nginx/nginx.conf) eller inne i /etc /nginx/sites-available.

Selv om navnet på konfigurasjonsfilene i denne katalogen (sites-available) kan settes til hva du vil, er det lurt å bruke navnet på domenene, og i tillegg valgte vi å legge til .conf utvidelse for å indikere at dette er konfigurasjonsfiler.

Disse serverblokkene kan være relativt komplekse, men i sin grunnleggende form består de av følgende innhold:

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

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

Du kan bruke blokkene ovenfor for å begynne å sette opp dine virtuelle verter, eller du kan lage filene med det grunnleggende skjelettet fra /etc/nginx/sites-available/default (Debian) eller /etc/nginx/nginx.conf.default ( CentOS).

Endre tillatelsene og eierskapet når de er kopiert:

# 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

Når du er ferdig, bør du slette eksempelfilen eller gi den nytt navn til noe annet for å unngå forvirring eller konflikter.

Vær oppmerksom på at du også må opprette katalogen for loggene (/var/www/logs) og gi Nginx-brukeren (nginx eller www-data, avhengig av om du kjører CentOS eller Debian ) lese- og skrivetillatelser over det:

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

De virtuelle vertene må nå aktiveres ved å opprette en symbolkobling til denne filen i den nettstedaktiverte katalogen:

# 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

Deretter oppretter du en eksempel-html-fil kalt index.html inne i /var/www//public_html for hver av de virtuelle vertene (erstatt som behov for). Endre følgende kode etter behov:

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

Til slutt, test Nginx-konfigurasjonen og start webserveren. Hvis det er noen feil i konfigurasjonen, vil du bli bedt om å rette dem:

# nginx -t && systemctl start nginx

og legg til følgende oppføringer i /etc/hosts-filen på din lokale maskin som en grunnleggende navneløsningsstrategi:

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

Start deretter en nettleser og gå til URL-ene som er oppført ovenfor:

For å legge til flere virtuelle verter i Nginx, gjenta bare trinnene som er skissert ovenfor så mange ganger som nødvendig.

IP-baserte virtuelle verter i Nginx

I motsetning til navnebaserte virtuelle verter der alle verter er tilgjengelige via samme IP-adresse, krever IP-baserte virtuelle verter en annen IP:port-kombinasjon hver.

Dette lar webserveren returnere forskjellige nettsteder avhengig av IP-adressen og porten der forespørselen mottas. Siden navngitte virtuelle verter gir oss fordelen av å dele en IP-adresse og port, er de standarden for generelle webservere og bør være oppsettet du velger med mindre den installerte versjonen av Nginx ikke støtter Server Name Indication (SNI) , enten fordi det er en VIRKELIG utdatert versjon, eller fordi den ble kompilert uten kompileringsalternativet –with-http_ssl_module.

Hvis,

# nginx -V

returnerer ikke de uthevede alternativene nedenfor:

du må oppdatere din versjon av Nginx eller kompilere den på nytt, avhengig av din opprinnelige installasjonsmetode. For å kompilere Nginx, følg artikkelen nedenfor:

  1. Installer og kompiler Nginx fra kilder i RHEL/CentOS 7

Forutsatt at vi er i gang, må vi merke oss at en annen forutsetning for IP-baserte virtuelle verter er tilgjengeligheten av separate IP-er – enten ved å tilordne dem til distinkte nettverksgrensesnitt, eller gjennom bruk av virtuelle IP-er (også kjent som IP-aliasing). ).

For å utføre IP-aliasing i Debian (forutsatt at du bruker eth0), rediger /etc/network/interfaces som følger:

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

I eksemplet ovenfor lager vi to virtuelle NIC-er av eth0: eth0:1 (192.168.0.25) og eth0:2 (192.168.0.26).

I CentOS, gi nytt navn til /etc/sysconfig/network-scripts/ifcfg-enp0s3 som ifcfg-enp0s3:1 og lag en kopi som ifcfg-enp0s3:2, og deretter bare endre henholdsvis følgende linjer:

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

og

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

Når du er ferdig, start nettverkstjenesten på nytt:

# systemctl restart networking

Deretter gjør du følgende endringer i serverblokkene som er definert tidligere i denne artikkelen:

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

listen 192.168.0.25:80

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

listen 192.168.0.26:80

Til slutt, start Nginx på nytt for at endringene skal tre i kraft.

# systemctl restart nginx

og ikke glem å oppdatere dine lokale /etc/hosts tilsvarende:

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Dermed vil hver forespørsel gjort til 192.168.0.25 og 192.168.0.26 på port 80 returnere henholdsvis tecmintlovesnginx.com og nginxmeanspower.com:

Som du kan se på bildene ovenfor, har du nå to IP-baserte virtuelle verter som bruker den eneste NIC på serveren din med to forskjellige IP-aliaser.

Sammendrag

I denne opplæringen har vi forklart hvordan du setter opp både navnebaserte og IP-baserte virtuelle verter i Nginx. Selv om du sannsynligvis vil bruke det første alternativet, er det viktig å vite at det andre alternativet fortsatt er der hvis du trenger det - bare sørg for at du tar denne avgjørelsen etter å ha vurdert faktaene som er skissert i denne veiledningen.

I tillegg kan det være lurt å bokmerke Nginx-dokumentene siden det er verdig og godt å referere til dem ofte mens du oppretter serverblokker (der har du det – vi snakker på Nginx-språket nå) og konfigurerer dem. Du vil ikke tro på alle alternativene som er tilgjengelige for å konfigurere og justere denne enestående webserveren.

Som alltid, ikke nøl med å sende oss en linje ved å bruke skjemaet nedenfor hvis du har spørsmål eller kommentarer om denne artikkelen. Vi ser frem til å høre fra deg, og din tilbakemelding om denne guiden er hjertelig velkommen.