Hostwinds Tutorials

Zoekresultaten voor:


Inhoudsopgave


Vereisten
Nginx-configuratie
Test de Nginx-configuratie

Nginx Reverse Proxy met SSL

Trefwoorden: Cloud Servers,  SSL,  VPS 

Vereisten
Nginx-configuratie
Test de Nginx-configuratie

Nginx is een krachtig hulpmiddel. Hiermee kunt u meerdere apps, websites, load-evenwichtige toepassingen bedienen en nog veel meer. Deze flexibiliteit wordt allemaal aangedreven door een relatief eenvoudig configuratiesysteem dat bijna-menselijke leesbare configuratiebestanden gebruikt. Deze gids toont aan hoe u een NGINX-omgekeerde proxy opzet met SSL op een Hostwinds Cloud VPS.

Vereisten

Deze handleiding neemt een algemeen begrip van het gebruik van een Linux-gebaseerd systeem via opdrachtregel en neemt verder de volgende voorwaarden aan:

  • Ubuntu 18.04
  • Niet-rootgebruiker
  • App draait op de gewenste reverse-proxy-poort (deze handleiding gaat uit van poort 3000)
  • DNS A-naamrecord voor gewenst domein
  • SSL-certificaat voor het domein

Nginx-configuratie

Het pakket Nginx-full is standaard ingesteld op een dynamische Shared Virtual Host-omgeving. De configuratiebestanden voor elke virtuele host zijn hier beschikbaar voor gebruik:

/etc/nginx/sites-available/

Deze locatie heeft een bestand met de naam standaard beschikbaar om te gebruiken als basissjabloon. We zullen echter handmatig een nieuw configuratiebestand in deze handleiding maken en deze indien nodig vullen. Eenmaal ingelogd als uw niet-rootgebruiker, geeft u deze opdracht uit om het proces te starten:

sudo touch /etc/nginx/sites-available/domain.tld

Zorg ervoor dat u ze vervangt domein-tld met het domein dat u daadwerkelijk gebruikt.

Vervolgens gaan we om dat bestand te wijzigen om de taken uit te voeren die we nodig hebben om het te doen. We zullen gebruiken vim in deze handleiding als teksteditor. Je mag gebruiken nano of een andere teksteditor op basis van uw persoonlijke voorkeur.

sudo vim /etc/nginx/sites-available/domain.tld

Nu het bestand bestaat, voegt u de volgende tekst toe aan dit bestand. Wijzig de aangegeven tekst om te verwijzen naar uw domein, de poort die uw app gebruikt, en uw SSL-certificaatpaden. Dit bestand is de hoofdconfiguratie voor de omgekeerde proxy:

###
# This Section listens on port 80 for your domain and rewrites the request 
# to HTTPS for us
###

server {
listen 80;
server_name domain.tld www.domain.tld; # Edit this to your domain name
rewrite ^ https://$host$request_uri permanent;
}

###
# This is all the configuration declarations that help SSL Function.
###

server {
listen 443 ssl;

server_name domain.tld;
# Edit this to your domain name

ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem;       
# If you use Lets Encrypt, you should just need to change the domain. 

ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem;     
# If you use Let's Encrypt, you should just need to change the domain.

ssl_session_cache builtin:1000 shared:SSL:10m;                        
# Defining option to share SSL Connection with Passed Proxy

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;                                  
# Defining used protocol versions. 

ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; 
# Defining ciphers to use. 

ssl_prefer_server_ciphers on;                                         
# Enabling ciphers

access_log /var/log/nginx/access.log;                                 
# Log Location. Can be anywhere. Make sure the nginx user defined in /etc/nginx/nginx.conf has r/w permissions

###
# This is the juicey part of the config file, handing off relevant data to 
# our back-end app running on port 3000
# Nothing should need to be changed here, unless port 3000 is not the port 
# you're using. 
# Furthermore, if you're using a socket to serve your app (PHP comes to 
# mind), you can define a unix:.sock location here as well
###

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:3000;
proxy_read_timeout 90;
}
}

Sla het bestand op en sluit de teksteditor.

Test de Nginx-configuratie

Nu de configuratie is gemaakt, moeten we Nginx vertellen dat het bestand bij het laden moet controleren. We maken een symbolische link:

sudo ln -s /etc/nginx/sites-avaialable/domain.tld /etc/nginx/sites-enabled/domain.tld.conf

Vervolgens testen we de configuratie voordat we de Nginx-systeemservice opnieuw starten

sudo nginx -t

Daarna zou het de test moeten uitvoeren en het volgende bericht bij een succes moeten weergeven:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

We weten nu dat het configuratiebestand geen crash zal veroorzaken, dus laten we de NGINX-service opnieuw opstarten en de app testen.

sudo systemctl restart nginx

U moet nu toegang hebben tot de app die op de gedefinieerde poort wordt uitgevoerd door te bladeren naar de domein-tld zoals afgebeeld in het eerder gemaakte Nginx-configuratiebestand.

Geschreven door Hostwinds Team  /  juni- 14, 2019