VPS · Juhend

nginx pöördproksina (reverse proxy): juhend

Uuendatud October 11, 2026 4 min lugemist

Sellel lehel
  1. Mida pöördproksi teeb
  2. 1. samm: paigalda nginx
  3. 2. samm: loo proksi server-plokk
  4. Päised ja lõpukaldkriips
  5. WebSockets
  6. 3. samm: tasuta HTTPS Certbotiga
  7. Vigade 502, 504 ja 413 parandamine
  8. Käita seda HytHosti VPS-is
  9. KKK

Pöördproksi asub sinu rakenduste ees ja edastab külastajate päringud neile. Kui nginx on ees, saab mõnel pordil töötavast Node.js-rakendusest, Docker-konteinerist või juhtpaneelist https://app.example.com – koos HTTPS-i, õigete päiste ja ühe kohaga, kust kõike hallata.

See juhend seadistab nginx-i Ubuntus samm-sammult pöördproksiks: server-plokk, päised, WebSockets, tasuta HTTPS ja vead, millega kõige tõenäolisemalt kokku puutud.

Mida pöördproksi teeb

  • Üks avalik sisenemispunkt. nginx kuulab porte 80 ja 443 ning suunab iga domeeni või tee õigesse rakendusse, nii et rakendused ise ei ole kunagi otse internetile avatud.
  • HTTPS ühes kohas. Sertifikaate haldab nginx; selle taga olevad rakendused võivad localhostis rääkida tavalist HTTP-d.
  • Mitu rakendust ühel serveril. app.example.com, api.example.com ja example.com/blog võivad kõik viia eri teenusesse.
  • Lisad: tihendamine, vahemälu, üleslaadimise piirangud ja ligipääsureeglid, ilma rakendust puutumata.

1. samm: paigalda nginx

sudo apt update
sudo apt install nginx

Ava http://your-server-ip ja peaksid nägema nginx-i tervituslehte. Kui kasutad ufw-d, luba veebiliiklus käsuga sudo ufw allow 'Nginx Full'.

Veendu, et rakendus töötab ja on serveris endas kättesaadav, näiteks käsuga curl http://127.0.0.1:3000. Kui see ei õnnestu, ei õnnestu ka nginx-il.

Käita nginx-i ja oma rakendusi täis root-õigustega: HytHost KVM VPS-paketid alates €2.92/kuu.

Vaata VPS-pakette

2. samm: loo proksi server-plokk

Ubuntus saab iga sait oma faili kaustas /etc/nginx/sites-available/ ja see lülitatakse sisse lingiga kaustas sites-enabled. Loo fail /etc/nginx/sites-available/app.example.com:

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

Lülita see sisse, testi seadistust ja laadi uuesti:

sudo ln -s /etc/nginx/sites-available/app.example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Suuna domeeni A-kirje oma serverile ja http://app.example.com näitab nüüd sinu rakendust. Käivita enne uuesti laadimist alati nginx -t: see püüab trükivead kinni enne, kui need saidi maha võtavad.

Päised ja lõpukaldkriips

  • Host edastab domeeni, mida külastaja küsis. Ilma selleta saadab nginx aadressi proxy_pass-ist ja rakendused, mis koostavad linke hostist, lähevad katki.
  • X-Real-IP ja X-Forwarded-For edastavad külastaja IP-aadressi. Ilma nendeta paistab iga päring tulevat aadressilt 127.0.0.1.
  • X-Forwarded-Proto ütleb rakendusele, kas külastaja kasutas HTTPS-i, et see ei suunaks lõputus tsüklis ümber.

Ubuntu nginx-i pakett sisaldab neid ridu failis /etc/nginx/proxy_params, nii et include proxy_params; on otsetee.

Lõpukaldkriips on oluline. Rakenduse jaoks, mis asub mingi tee all:

location /app/ {
    proxy_pass http://127.0.0.1:3000/;
}

Kui pordi järel on kaldkriips, jõuab /app/login rakendusse kujul /login. Ilma selleta saab rakendus kogu /app/login.

WebSockets

Vestlusrakendused, reaalajas juhtpaneelid ja paljud halduspaneelid kasutavad WebSockets-i, mis vajab kahte lisapäist. Lisa see map üks kord http-plokki, näiteks uude faili /etc/nginx/conf.d/websocket.conf:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

Seejärel location-plokki:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 1h;

nginx sulgeb proksitud ühenduse, mis 60 sekundi jooksul midagi ei saada; pikem proxy_read_timeout hoiab vaiksed WebSocketi ühendused avatuna. proxy_http_version 1.1 on vaikimisi alles alates nginx 1.29.7-st ja Ubuntu 24.04 tuleb versiooniga 1.24, seega jäta see rida alles.

3. samm: tasuta HTTPS Certbotiga

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --nginx -d app.example.com

Certbot hangib tasuta Let's Encrypti sertifikaadi, lisab HTTPS-i seaded sinu server-plokki ja oskab HTTP suunata HTTPS-ile. Sertifikaati uuendatakse automaatselt; kontrolli seda käsuga sudo certbot renew --dry-run. Sertifikaatidest lähemalt juhendis kuidas saada tasuta SSL-sertifikaat.

Vigade 502, 504 ja 413 parandamine

VigaTavaline põhjusLahendus
502 Bad Gatewaynginx ei jõua rakenduseni: see on peatatud, jooksis kokku või kuulab teist porti või aadressiKäivita rakendus, kontrolli porti käsuga curl http://127.0.0.1:PORT, loe /var/log/nginx/error.log
504 Gateway TimeoutRakendusel kulus vastamiseks üle 60 sekundiKiirenda päringut või tõsta selle location-i jaoks proxy_read_timeout väärtust
413 Request Entity Too LargeÜleslaaditav fail on suurem kui nginx-i vaikepiirang 1 MBMäära server-plokis client_max_body_size 50m;
Ümbersuunamise tsükkelRakendus ei tea, et külastaja kasutas HTTPS-iEdasta X-Forwarded-Proto ja ütle rakendusele, et see on proksi taga

Pärast iga muudatust: sudo nginx -t, seejärel sudo systemctl reload nginx.

Käita seda HytHosti VPS-is

Pöördproksi vajab serverit, kus pordid 80 ja 443 on sinu kontrolli all. HytHosti VPS-paketid töötavad KVM-il täis root-ligipääsu, SSD-salvestuse ja DDoS-kaitsega; vali Ubuntu 24.04 ja järgi ülaltoodud samme. Käitad rakendusi konteinerites? Seadista esmalt Docker juhendiga kuidas paigaldada Docker Ubuntusse ja seo konteinerite pordid aadressiga 127.0.0.1, et neile pääseks ligi ainult nginx.

KKK

Korduma kippuvad küsimused

Pöördproksi edastab päringud ühele või mitmele enda taga olevale rakendusele. Koormusejaotur on pöördproksi, mis jagab päringud sama rakenduse mitme koopia vahel. nginx oskab mõlemat, kasutades upstream-plokki, milles koopiad on loetletud.

nginx ei jõua enda taga oleva rakenduseni. Kontrolli, et rakendus töötab ja kuulab proxy_pass-is märgitud aadressi ja porti, ning täpse põhjuse leiad failist /var/log/nginx/error.log.

Ei, kui rakendus töötab samas serveris. nginx hoolitseb külastajate HTTPS-i eest ja suhtleb rakendusega tavalise HTTP kaudu aadressil 127.0.0.1, mis ei lahku kunagi masinast.

Anna igale rakendusele oma server-plokk oma server_name-iga, näiteks app.example.com ja api.example.com, ning igaühele proxy_pass eri pordile.

Jah. Avalda iga konteineri port ainult aadressil 127.0.0.1 ja suuna proxy_pass sellele. Nii jäävad konteinerid avalikust internetist eemale, mis on oluline, sest Dockeri avaldatud pordid lähevad ufw-st mööda.

Majuta oma rakendused nginx-i taga

HytHosti KVM VPS-paketid täis root-ligipääsu, SSD-salvestuse ja DDoS-kaitsega alates €2.92/kuu.

Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours

Kas see juhend oli abiks?