Sådan konfigureres navne- og IP-baserede virtuelle værter (serverblokke) med NGINX


I en relativt kort periode, siden den blev udviklet og gjort tilgængelig (lidt over 10 år), har Nginx oplevet en vedvarende og stabil vækst blandt webservere på grund af dens høje ydeevne og lave hukommelsesforbrug.

Da Nginx er gratis og open source-software, er det blevet vedtaget af tusindvis af webserveradministratorer over hele kloden, ikke kun i Linux- og * nix-servere, men også i Microsoft Windows.

For dem af os, der er mest vant til Apache, kan Nginx have en noget stejl indlæringskurve (i det mindste var det min sag), men det lønner sig bestemt, når du har oprettet et par websteder og begynder at se trafik- og ressourceforbrugsstatistikker.

I denne artikel vil vi forklare, hvordan du bruger Nginx til at oprette navne- og ip-baseret virtuel hosting i CentOS/RHEL 7-servere og Debian 8 og derivater, startende med Ubuntu 15.04 og dens spin-offs.

  1. Operativsystem: Debian 8 Jessie-server [IP 192.168.0.25]
  2. Gateway: Router [IP 192.168.0.1]
  3. Webserver: Nginx 1.6.2-5
  4. Dummy-domæner: www.tecmintlovesnginx.com og www.nginxmeanspower.com.

Installation af Nginx Web Server

Hvis du ikke allerede har gjort det, skal du installere Nginx, inden du fortsætter videre. Hvis du har brug for hjælp til at komme i gang, vil en hurtig søgning efter nginx på dette websted returnere flere artikler om dette emne. Klik på forstørrelsesglasikonet øverst på denne side, og søg efter nøgleordet nginx. Hvis du ikke ved, hvordan du søger efter artikler på dette websted, skal du ikke bekymre dig her, vi har tilføjet links til nginx-artiklerne, bare gå igennem og installer det i henhold til dine respektive Linux-distributioner.

  1. Installer og kompilér Nginx fra kilder i RHEL/CentOS 7
  2. Installer Nginx-webserver på Debian 8
  3. Installer Nginx med MariaDB og PHP/PHP-FPM på Fedora 23
  4. Installer Nginx-webserver på Ubuntu 15.10 Server/Desktop
  5. Adgangskodebeskyttet Nginx-webstedsmapper

Gør dig derefter klar til at fortsætte med resten af denne vejledning.

Oprettelse af navne-baserede virtuelle værter i Nginx

Som jeg er sikker på, at du allerede ved, er en virtuel vært et websted, der betjenes af Nginx i en enkelt VPS-sky eller fysisk server. Imidlertid finder du i Nginx-dokumenterne udtrykket "serverblokke" i stedet, men de er dybest set den samme ting, der kaldes forskellige navne.

Det første trin til at oprette virtuelle værter er at oprette en eller flere serverblokke (i vores tilfælde opretter vi to, en for hvert dummy-domæne) i hovedkonfigurationsfilen (/etc/nginx/nginx.conf) eller inde i/etc/nginx/sites-tilgængelige.

Selvom navnet på konfigurationsfilerne i denne mappe (tilgængelige websteder) kan indstilles til hvad du vil, er det en god ide at bruge navnet på domænerne, og derudover valgte vi at tilføje .konf udvidelse for at angive, at dette er konfigurationsfiler.

Disse serverblokke kan være relativt komplekse, men i deres grundlæggende form består de af følgende indhold:

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 bruge ovenstående blokke til at starte opsætningen af dine virtuelle værter, eller du kan oprette filerne med det grundlæggende skelet fra/etc/nginx/sites-available/default (Debian) eller /etc/nginx/nginx.conf.default ( CentOS).

Når de er kopieret, skal du ændre deres tilladelser og ejerskab:

# 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 færdig, skal du slette prøvefilen eller omdøbe den til noget andet for at undgå forvirring eller konflikter.

Bemærk, at du også bliver nødt til at oprette kataloget til logfilerne (/var/www/logs ) og give Nginx-brugeren (nginx eller www-data, afhængigt af om du kører CentOS eller Debian ) læse og skrive tilladelser over det:

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

De virtuelle værter skal nu aktiveres ved at oprette et symlink til denne fil i det stedbaserede bibliotek:

# 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

Opret derefter en prøve-html-fil med navnet index.html inde i /var/www//public_html for hver af de virtuelle værter (udskift som havde brug for). Rediger følgende kode efter behov:

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

Endelig test Nginx-konfigurationen og start webserveren. Hvis der er fejl i konfigurationen, bliver du bedt om at rette dem:

# nginx -t && systemctl start nginx

og tilføj følgende poster til din /etc/hosts -fil på din lokale maskine som en grundlæggende navneløsningsstrategi:

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

Start derefter en webbrowser, og gå til de ovennævnte URL'er:

Hvis du vil tilføje flere virtuelle værter i Nginx, skal du blot gentage trinene beskrevet ovenfor så mange gange som nødvendigt.

IP-baserede virtuelle værter i Nginx

I modsætning til navne-baserede virtuelle værter, hvor alle værter er tilgængelige via den samme IP-adresse, kræver IP-baserede virtuelle værter en anden IP: port kombination hver.

Dette giver webserveren mulighed for at returnere forskellige websteder afhængigt af IP-adressen og porten, hvor anmodningen modtages. Da navngivne-baserede virtuelle værter giver os fordelen ved at dele en IP-adresse og port, er de standarden for generelle webservere og skal være den valgte opsætning, medmindre din installerede version af Nginx ikke understøtter Server Name Indication (SNI) , enten fordi det er en virkelig forældet version, eller fordi den blev kompileret uden kompilationsindstillingen –with-http_ssl_module.

Hvis,

# nginx -V

returnerer ikke de fremhævede muligheder nedenfor:

skal du opdatere din version af Nginx eller kompilere den igen afhængigt af din oprindelige installationsmetode. Følg nedenstående artikel for at kompilere Nginx:

  1. Installer og kompilér Nginx fra kilder i RHEL/CentOS 7

Forudsat at vi er gode til at gå, skal vi bemærke, at en anden forudsætning for IP-baserede virtuelle værter er tilgængeligheden af separate IP'er - enten ved at tildele dem til forskellige netværksgrænseflader eller ved brug af virtuelle IP'er (også kendt som IP-aliasing) ).

For at udføre IP-aliasing i Debian (forudsat at du bruger eth0) skal du redigere /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 opretter vi to virtuelle NIC'er ud af eth0: eth0: 1 (192.168.0.25) og eth0: 2 (192.168.0.26).

I CentOS skal du omdøbe/etc/sysconfig/network-scripts/ifcfg-enp0s3 som ifcfg-enp0s3: 1 og lave en kopi som ifcfg-enp0s3: 2 , og derefter bare skift 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 færdig, skal du genstarte netværkstjenesten:

# systemctl restart networking

Foretag derefter følgende ændringer i serverblokkene, der tidligere er defineret i denne artikel:

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

Endelig genstart Nginx for at ændringerne skal træde i kraft.

# systemctl restart nginx

og glem ikke at opdatere din lokale /etc/hosts i overensstemmelse hermed:

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Således returnerer hver anmodning til 192.168.0.25 og 192.168.0.26 på port 80 henholdsvis tecmintlovesnginx.com og nginxmeanspower.com:

Som du kan se på billederne ovenfor, har du nu to IP-baserede virtuelle værter, der bruger den eneste NIC på din server med to forskellige IP-aliasser.

Resume

I denne vejledning har vi forklaret, hvordan man opsætter både navne- og IP-baserede virtuelle værter i Nginx. Selvom du sandsynligvis vil bruge den første mulighed, er det vigtigt at vide, at den anden mulighed stadig er der, hvis du har brug for det - bare sørg for at tage denne beslutning efter at have overvejet de faktiske forhold, der er beskrevet i denne vejledning.

Derudover vil du måske bogmærke Nginx-dokumenterne, da det er værd og godt at henvise til dem ofte, mens du opretter serverblokke (der har du det - vi taler på Nginx-sproget nu) og konfigurerer dem. Du tror ikke på alle de muligheder, der er tilgængelige for at konfigurere og indstille denne fremragende webserver.

Som altid, tøv ikke med at sende os en linje ved hjælp af nedenstående formular, hvis du har spørgsmål eller kommentarer til denne artikel. Vi ser frem til at høre fra dig, og din feedback om denne guide er meget velkommen.