Hostwinds Tutorials
Zoekresultaten voor:
Inhoudsopgave
Trefwoorden: Cloud Servers, SSL, VPS
Als u een webtoepassing op een privépoort uitvoert (zoals Localhost: 3000), het is niet direct toegankelijk via internet.Een van de meest effectieve manieren om die app veilig bloot te leggen, is om er een omgekeerde proxy voor te plaatsen.
Nginx is een lichtgewicht bekende tool die precies dat kan doen-ontvang inkomend verkeer en stuur het door naar uw app-terwijl hij ook HTTPS afhandelt met een gratis SSL-certificaat van Let's Encrypt.
In deze gids leert u:
Nieuw bij webservers?Bekijk onze uitleg over Hoe webservers werken.
EEN omgekeerde proxy is een server die tussen uw gebruikers en uw backend -services zit.In plaats van dat uw app publiekelijk op een poort luistert (zoals 3000), ontvangt Nginx eerst het verkeer en geeft het vervolgens door aan de app die op de achtergrond wordt uitgevoerd.
Dit is waarom deze aanpak zo nuttig is:
Zelfs als uw app het webverkeer al kan verwerken, vereenvoudigt het gebruik van Nginx als een omgekeerde proxy vaak de instelling, verbetert de flexibiliteit en verhoogt het de controle.
Laten we ervoor zorgen dat u alles hebt wat u nodig heeft: voordat we aan de slag gaan:
A yourdomain.com → 123.123.123.123
A www.yourdomain.com → 123.123.123.123
Voortplanting kan een paar minuten tot een paar uur duren.
Weet je niet hoe je je DNS moet configureren?Hier is Hoe u een A -record toevoegt met de meeste domeinhosts.
Notitie: Als uw app nog niet wordt uitgevoerd, is dat oké - u kunt nog steeds door de installatie gaan en later testen.
sudo apt update
sudo apt install nginx
Controleer dan dat het actief is:
sudo systemctl status nginx
Je zou "actief (hardlopen) moeten zien."
sudo apt install certbot python3-certbot-nginx
Met deze plug -in kan CertBot uw Nginx -configuratie automatisch wijzigen wanneer u een certificaat aanvraagt - geen handmatig bewerken vereist voor basisinstellingen.
Heb je een ander besturingssysteem?Volg deze gids op Hoe te installeren, laten we coderen op Fedora en Debian
Nu uw systeem klaar is, is de eerste echte stap om Nginx te configureren om naar verkeer op uw domein te luisteren en door te sturen naar uw interne toepassing - dit is wat Nginx maakt als een omgekeerde proxy.
Zonder deze installatie zouden gebruikers die proberen uw website te bezoeken, een lege pagina of het standaard NGINX -welkomstscherm raken.U moet Nginx expliciet vertellen:
U maakt een configuratiebestand voor uw domein in de sites-beschikbare map van Nginx.Dit houdt configuraties georganiseerd en maakt het gemakkelijk om individuele sites in te schakelen of uit te schakelen.
sudo nano /etc/nginx/sites-available/yourdomain.com
Plak in het volgende blok en stel de domein- en app -poort indien nodig aan:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
# Pass important headers to the backend
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;
}
}
Nginx gebruikt symbolische links in de sites-toegepast Directory om sites te activeren.Dus nu maak je een link en opnieuw laden nginx:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t
Controleer op syntaxisfouten.Als alles er goed uitziet:
sudo systemctl reload nginx
Uw omgekeerde proxy is nu live - verzoeken om http://yourdomain.com wordt doorgegeven aan uw app op poort 3000.
Met de omgekeerde proxy die werkt via HTTP, is de volgende stap om het te beveiligen met HTTPS.Dit voegt codering toe aan alle communicatie tussen uw gebruikers en uw server - het beschermen van inloggegevens, API -aanvragen, persoonlijke gegevens en meer.
U gebruikt Let's Encrypt, een gratis certificaatautoriteit en Certbot, die het proces automatiseert.
Voer deze opdracht uit en vervang de domeinen door uw werkelijke waarden:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Wat dit doet:
Certbot zal:
Tip: Als uw DNS niet volledig wordt voortgebracht of uw serverfirewall poort 80 blokkeert, mislukt validatie.U kunt dit testen met:
curl -I http://yourdomain.com
Bekijk onze gids op om poorten beter te begrijpen Hoe webserverpoorten werken.
Nadat CertBot is voltooid, moet uw Nginx -configuratie zoiets bevatten:
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
U zou nu https://ourdomain.com moeten kunnen bezoeken en uw site kunnen zien met een geldig SSL -certificaat.
Als u de optie Redirect niet hebt gekozen tijdens de certbot -installatie, kunt u dit handmatig toevoegen:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
Dit dwingt al het HTTP -verkeer dat moet worden doorgestuurd naar HTTPS, waardoor gebruikers niet per ongeluk de onzekere versie van uw site gebruiken.
Zodra uw SSL-certificaat aanwezig is, kunt u Nginx verfijnen om de beveiliging en compatibiliteit te verbeteren.Deze instellingen gaan in het HTTPS -serverblok.
Hier is een verbeterd voorbeeld:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets off;
Deze wijzigingen verbeteren uw SSL -beveiligingsscore en beschermen bezoekers tegen downgrade -aanvallen of onzekere coderingskeuzes.
Optioneel: U kunt uw site testen met SSL -laboratoria om te zien hoe uw configuratie presteert en specifieke verbeteringssuggesties te krijgen.
Voor nog sterkere codering kunt u een aangepaste Diffie-Hellman (DH) -toets genereren.Deze stap is optioneel, maar het wordt vaak aanbevolen voor productieomgevingen.
Voer deze opdracht uit om een 2048-bit DH-groep te genereren:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Voeg vervolgens de volgende regel toe aan uw SSL Server -blok:
ssl_dhparam /etc/ssl/certs/dhparam.pem;
Diffie-Hellman-parameters versterken voorwaartse geheimhouding, wat betekent dat zelfs als uw privésleutel in de toekomst op de een of andere manier wordt gecompromitteerd, in het verleden gecodeerde sessies nog steeds veilig zullen zijn.
Het duurt een paar minuten om de DH-groep te genereren, maar het is een eenmalige stap en het waard om te doen voor een betere beveiligingshouding.
Laten we certificaten coderen om elke 90 dagen af te lopen.Gelukkig installeert CertBot een systeemtimer die twee keer per dag controleert op certificaten die aflopen en deze automatisch verlengt.
U kunt bevestigen dat de timer actief is met:
sudo systemctl list-timers | grep certbot
Je zou zoiets als dit moeten zien:
NEXT LEFT LAST PASSED UNIT ACTIVATES
2025-06-19 04:00:00 UTC 12h 2025-06-18 04:00:00 UTC 11h ago certbot.timer certbot.service
Voer het vernieuwingsproces handmatig te testen (zonder wijzigingen aan te brengen):
sudo certbot renew --dry-run
Dit simuleert het volledige vernieuwingsproces en bevestigt dat uw systeem klaar is om het automatisch te verwerken.
Als er geen fouten zijn, zullen uw certificaten in de achtergrond rustig worden verlengd.
Nu uw omgekeerde proxy is ingesteld en beveiligd met SSL, is het een goed idee om een paar praktische controles en best practices af te ronden.
Deze eenvoudige gewoonten kunnen helpen om problemen langs de lijn te voorkomen, uw configuratie gemakkelijker te onderhouden te maken en ervoor te zorgen dat alles blijft lopen zoals u verwacht.
Zelfs als alles lijkt te werken, kan hier een paar extra minuten doorbrengen je tijd en problemen besparen.
Start uw app opnieuw als deze niet automatisch wijzigingen detecteert
Sommige apps moeten opnieuw worden gestart om correct achter een proxy te werken.
Controleer logboeken
U kunt NGINX -logboeken volgen op fouten of ongebruikelijk verkeer:
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
Houd nginx en certbot bijgewerkt
Gebruik Sudo APT -update && sudo APT -upgrade regelmatig.Bijgewerkte pakketten repareren bugs, verbeteren de compatibiliteit en patchbeveiligingsproblemen.
Nadat u de basisprincipes van het instellen van een beveiligde omgekeerde proxy hebt onder de knie, kunt u uw configuratie uitbreiden om complexere behoeften te ondersteunen.Hier zijn enkele veel voorkomende scenario's die u kunnen helpen meer uit uw server te halen.
Als u verschillende web -apps op verschillende poorten uitvoert, kan Nginx verzoeken naar elke app routeren op basis van domein- of URL -pad.
Voorbeeld: verschillende domeinen
server {
listen 80;
server_name app1.example.com;
location / {
proxy_pass http://localhost:3001;
# proxy headers here
}
}
server {
listen 80;
server_name app2.example.com;
location / {
proxy_pass http://localhost:3002;
# proxy headers here
}
}
Met deze installatie kunt u meerdere apps bedienen met behulp van afzonderlijke subdomeinen, allemaal via Nginx op standaardpoorten.
Docker gebruiken?Leren Hoe u meerdere Docker -apps kunt proxy met nginx.
Als alternatief kunt u op basis van URL -paden proxy, wat handig is als u alle apps onder één domein wilt:
server {
listen 80;
server_name example.com;
location /app1/ {
proxy_pass http://localhost:3001/;
# proxy headers here
}
location /app2/ {
proxy_pass http://localhost:3002/;
# proxy headers here
}
}
Notitie: Bij het gebruik van op pad gebaseerd proxying, kan het achterhalen van schuine strepen en het herschrijven van URL lastig worden-zorg ervoor dat je backend-app kan worden omgekomen onder een subpad.
U kunt beperken hoeveel verzoeken een klant in een bepaald tijdsbestek kan doen om uw backend te beschermen tegen misbruik of toevallige overbelasting.
Voeg dit toe in het HTTP -blok in /etc/nginx/nginx.conf:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
Dan in uw server of locatieblok:
limit_req zone=mylimit burst=20 nodelay;
Deze configuratie maakt 10 aanvragen per seconde mogelijk met uitbarstingen van maximaal 20 verzoeken, waardoor overtollige verzoeken worden laten vallen om te voorkomen dat uw app overweldigt.
Als u verschillende instanties van uw app heeft die worden uitgevoerd (bijvoorbeeld meerdere containers of VPS's), kan Nginx het verkeer onder hen verdelen:
upstream backend {
server 192.168.1.10:3000;
server 192.168.1.11:3000;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
# proxy headers here
}
}
Nginx balances-aanvragen round-robin standaard, maar u kunt het configureren voor andere methoden zoals de minste verbindingen of IP-hash.
Bekijk voor meer informatie onze gids op DNS Load Balancing.
U kunt logboekregistratie aanpassen om belangrijke proxy -info op te nemen voor probleemoplossing of analyse:
log_format proxy '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'upstream_response_time $upstream_response_time '
'request_time $request_time';
access_log /var/log/nginx/proxy_access.log proxy;
Dit registreert stroomopwaartse responstijden en totale aanvraagtijden, waardoor trage backend -antwoorden worden geïdentificeerd.
Misschien wilt u HTTP -headers toevoegen of wijzigen voor beveiliging of functionaliteit:
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header Referrer-Policy no-referrer-when-downgrade;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Deze headers beschermen tegen clickjacking, mime snuiven en handhaven HTTPS -gebruik.
Geschreven door Hostwinds Team / juni- 14, 2019