Zoeken op website

Hoe u op naam gebaseerde en IP-gebaseerde virtuele hosts (serverblokken) kunt instellen met NGINX


In een relatief korte periode sinds de ontwikkeling en beschikbaarstelling (iets meer dan 10 jaar) heeft Nginx een aanhoudende en gestage groei doorgemaakt onder de webservers vanwege de hoge prestaties en het lage geheugengebruik.

Omdat Nginx gratis en open source-software is, is het door duizenden webserverbeheerders over de hele wereld overgenomen, niet alleen op Linux- en *nix-servers, maar ook op Microsoft Windows.

Mis het niet: op Apache-naam gebaseerde en IP-gebaseerde virtuele hosting

Voor degenen onder ons die het meest gewend zijn aan Apache: Nginx heeft misschien een ietwat steile leercurve (althans dat was mijn geval), maar het loont zeker de moeite als je er een paar hebt opgezet van sites en bekijk de statistieken over het verkeer en het gebruik van bronnen.

In dit artikel leggen we uit hoe je Nginx kunt gebruiken om name-based en ip-based virtuele hosting in CentOS/RHEL in te stellen 7 servers en Debian 8 en derivaten, te beginnen met Ubuntu 15.04 en zijn spin-offs.

Ons testscenario voor dit artikel is als volgt:

  1. Besturingssysteem: 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. Dummydomeinen: www.tecmintlovesnginx.com en www.nginxmeanspower.com.

Nginx-webserver installeren

Als je dit nog niet hebt gedaan, installeer dan Nginx voordat je verder gaat. Als je hulp nodig hebt om aan de slag te gaan, levert een snelle zoekopdracht naar nginx op deze site verschillende artikelen over dit onderwerp op. Klik op het vergrootglaspictogram bovenaan deze pagina en zoek op trefwoord nginx. Als u niet weet hoe u naar artikelen op deze site moet zoeken, hoeft u zich geen zorgen te maken. We hebben links naar de nginx-artikelen toegevoegd. Ga er gewoon doorheen en installeer het volgens uw respectievelijke Linux-distributies.

  1. Installeer en compileer Nginx vanuit bronnen in RHEL/CentOS 7
  2. Installeer Nginx-webserver op Debian 8
  3. Installeer Nginx met MariaDB en PHP/PHP-FPM op Fedora 23
  4. Installeer Nginx Web Server op Ubuntu 15.10 Server/Desktop
  5. Wachtwoordbeveiliging Nginx-websitemappen

Maak je dan klaar om door te gaan met de rest van deze tutorial.

Op naam gebaseerde virtuele hosts maken in Nginx

Zoals je vast al weet, is een virtuele host een website die door Nginx wordt bediend in een enkele cloud-VPS of fysieke server. In de Nginx-documenten zul je echter in plaats daarvan de term "serverblokken" vinden, maar ze zijn in principe hetzelfde, met verschillende namen.

De eerste stap bij het instellen van virtuele hosts is het maken van een of meer serverblokken (in ons geval zullen we er twee maken, één voor elk dummydomein) in het hoofdconfiguratiebestand (/etc/nginx/nginx.conf) of binnen /etc/nginx/sites-available.

Hoewel de naam van de configuratiebestanden in deze map (sites-available) kan worden ingesteld op wat je maar wilt, is het een goed idee om de naam van de domeinen te gebruiken, en daarnaast hebben we ervoor gekozen om de naam toe te voegen .conf extensie om aan te geven dat dit configuratiebestanden zijn.

Deze serverblokken kunnen relatief complex zijn, maar bestaan in hun basisvorm uit de volgende inhoud:

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

U kunt de bovenstaande blokken gebruiken om te beginnen met het instellen van uw virtuele hosts, of u kunt de bestanden maken met het basisskelet van /etc/nginx/sites-available/default (Debian ) of /etc/nginx/nginx.conf.default (CentOS).

Eenmaal gekopieerd, wijzigt u hun rechten en eigendom:

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

Debian en derivaten

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

CentOS en RHEL

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

Wanneer u klaar bent, moet u het voorbeeldbestand verwijderen of de naam ervan wijzigen in een andere naam om verwarring of conflicten te voorkomen.

Houd er rekening mee dat u ook de map voor de logs (/var/www/logs) moet maken en de Nginx-gebruiker (nginx of www-data , afhankelijk van of u CentOS of Debian gebruikt) lees- en schrijfrechten erover:

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

De virtuele hosts moeten nu worden ingeschakeld door een symbolische link naar dit bestand te maken in de map met sites ingeschakeld:

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

Maak vervolgens een voorbeeld-html-bestand met de naam index.html binnen /var/www//public_html voor elk van de virtuele hosts (vervang indien nodig). Wijzig indien nodig de volgende code:

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

Test ten slotte de Nginx-configuratie en start de webserver. Als er fouten in de configuratie voorkomen, wordt u gevraagd deze te corrigeren:

nginx -t && systemctl start nginx

en voeg de volgende vermeldingen toe aan uw /etc/hosts-bestand op uw lokale computer als basisstrategie voor naamomzetting:

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

Start vervolgens een webbrowser en ga naar de hierboven genoemde URL's:

Om meer virtuele hosts in Nginx toe te voegen, herhaalt u de hierboven beschreven stappen zo vaak als nodig is.

IP-gebaseerde virtuele hosts in Nginx

In tegenstelling tot op naam gebaseerde virtuele hosts waarbij alle hosts toegankelijk zijn via hetzelfde IP-adres, vereisen IP-gebaseerde virtuele hosts een andere IP:poortcombinatie van elk.

Hierdoor kan de webserver verschillende sites retourneren, afhankelijk van het IP-adres en de poort waarop het verzoek wordt ontvangen. Omdat op naam gebaseerde virtuele hosts ons het voordeel bieden dat we een IP-adres en poort delen, zijn ze de standaard voor webservers voor algemeen gebruik en zouden ze de voorkeur moeten hebben, tenzij je geïnstalleerde versie van Nginx Servernaamindicatie niet ondersteunt (SNI), ofwel omdat het een ECHT verouderde versie is, ofwel omdat het gecompileerd is zonder de –with-http_ssl_module compileeroptie.

Als,

nginx -V

retourneert de onderstaande gemarkeerde opties niet:

u zult uw versie van Nginx moeten bijwerken of opnieuw compileren, afhankelijk van uw oorspronkelijke installatiemethode. Volg het onderstaande artikel voor het compileren van Nginx:

  1. Installeer en compileer Nginx vanuit bronnen in RHEL/CentOS 7

Ervan uitgaande dat we klaar zijn om te gaan, moeten we opmerken dat een andere voorwaarde voor IP-gebaseerde virtuele hosts de beschikbaarheid van afzonderlijke IP's is – ofwel door ze toe te wijzen aan verschillende netwerkinterfaces, ofwel door het gebruik van virtuele IP's (ook bekend als IP-aliasing).

Om IP-aliasing uit te voeren in Debian (ervan uitgaande dat u eth0 gebruikt), bewerkt u /etc/network/interfaces als volgt:

Debian en derivaten

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

In het bovenstaande voorbeeld maken we twee virtuele NIC's van eth0: eth0:1 (192.168.0.25) en eth0:2 (192.168.0.26).

CentOS en RHEL

Hernoem in CentOS /etc/sysconfig/network-scripts/ifcfg-enp0s3 naar ifcfg-enp0s3:1 en maak een kopie als ifcfg-enp0s3:2 en wijzig vervolgens respectievelijk de volgende regels:

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

En

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

Als u klaar bent, start u de netwerkservice opnieuw op:

systemctl restart networking

Breng vervolgens de volgende wijzigingen aan in de serverblokken die eerder in dit artikel zijn gedefinieerd:

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

Start ten slotte Nginx opnieuw op om de wijzigingen door te voeren.

systemctl restart nginx

en vergeet niet uw lokale /etc/hosts dienovereenkomstig bij te werken:

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Elk verzoek aan 192.168.0.25 en 192.168.0.26 op poort 80 zal dus tecmintlovesnginx.com retourneren en nginxmeanspower.com, respectievelijk:

Zoals u in de bovenstaande afbeeldingen kunt zien, heeft u nu twee op IP gebaseerde virtuele hosts die de enige NIC in uw server gebruiken met twee verschillende IP-aliassen.

Samenvatting

In deze tutorial hebben we uitgelegd hoe je zowel op naam gebaseerde als IP-gebaseerde virtuele hosts in Nginx instelt. Hoewel u waarschijnlijk de eerste optie wilt gebruiken, is het belangrijk om te weten dat de andere optie er nog steeds is als u die nodig heeft. Zorg er wel voor dat u deze beslissing neemt nadat u de feiten in deze handleiding heeft overwogen.

Bovendien wil je misschien een bladwijzer maken voor de Nginx-documenten, omdat het de moeite waard is om er vaak naar te verwijzen tijdens het maken van serverblokken (daar heb je het – we praten nu in de Nginx-taal) en het configureren ervan. U zult niet geloven hoeveel opties er beschikbaar zijn om deze uitstekende webserver te configureren en af te stemmen.

Aarzel zoals altijd niet om ons een bericht te sturen via het onderstaande formulier als u vragen of opmerkingen heeft over dit artikel. Wij horen graag van u en uw feedback over deze handleiding is van harte welkom.