VPS · Vodič

nginx reverse proxy: vodič

Ažurirano October 11, 2026 4 min čitanja

Na ovoj stranici
  1. Što radi reverse proxy
  2. Korak 1: Instalirajte nginx
  3. Korak 2: Napravite proxy server blok
  4. Zaglavlja i kosa crta na kraju
  5. WebSockets
  6. Korak 3: Besplatni HTTPS uz Certbot
  7. Rješavanje grešaka 502, 504 i 413
  8. Pokrenite ga na HytHost VPS-u
  9. FAQ

Reverse proxy stoji ispred vaših aplikacija i prosljeđuje im zahtjeve posjetitelja. Kad je nginx ispred, Node.js aplikacija, Docker kontejner ili nadzorna ploča na nekom portu postaje https://app.example.com, s HTTPS-om, ispravnim zaglavljima i jednim mjestom za upravljanje svime.

Ovaj vodič korak po korak postavlja nginx kao reverse proxy na Ubuntuu: server blok, zaglavlja, WebSockets, besplatni HTTPS i greške na koje ćete najvjerojatnije naići.

Što radi reverse proxy

  • Jedna javna ulazna točka. nginx sluša na portovima 80 i 443 i svaku domenu ili putanju prosljeđuje pravoj aplikaciji, pa same aplikacije nikad nisu izložene internetu.
  • HTTPS na jednom mjestu. nginx upravlja certifikatima; aplikacije iza njega mogu koristiti obični HTTP na localhostu.
  • Više aplikacija na jednom serveru. app.example.com, api.example.com i example.com/blog mogu voditi svaka na drugu uslugu.
  • Dodaci: kompresija, predmemoriranje, ograničenja uploada i pravila pristupa, bez diranja aplikacije.

Korak 1: Instalirajte nginx

sudo apt update
sudo apt install nginx

Otvorite http://your-server-ip i trebali biste vidjeti nginx stranicu dobrodošlice. Ako koristite ufw, dopustite web promet naredbom sudo ufw allow 'Nginx Full'.

Provjerite radi li vaša aplikacija i je li dostupna na samom serveru, na primjer s curl http://127.0.0.1:3000. Ako to ne uspije, neće uspjeti ni nginx.

Pokrenite nginx i svoje aplikacije uz puni root pristup: HytHost KVM VPS paketi kreću od €2.92/mj.

Pogledajte VPS pakete

Korak 2: Napravite proxy server blok

Na Ubuntuu svaka stranica dobiva datoteku u /etc/nginx/sites-available/, a uključuje se poveznicom u sites-enabled. Napravite /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;
    }
}

Uključite je, testirajte konfiguraciju i ponovno je učitajte:

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

Usmjerite A zapis domene na svoj server i http://app.example.com sada prikazuje vašu aplikaciju. Uvijek pokrenite nginx -t prije ponovnog učitavanja: uhvatit će tipfelere prije nego što sruše stranicu.

Zaglavlja i kosa crta na kraju

  • Host prenosi domenu koju je posjetitelj zatražio. Bez njega nginx šalje adresu iz proxy_pass, a aplikacije koje grade poveznice iz hosta prestaju raditi.
  • X-Real-IP i X-Forwarded-For prenose IP adresu posjetitelja. Bez njih svaki zahtjev izgleda kao da dolazi s 127.0.0.1.
  • X-Forwarded-Proto govori aplikaciji je li posjetitelj koristio HTTPS, kako ne bi preusmjeravala u petlji.

Ubuntuov nginx paket sadrži te retke u /etc/nginx/proxy_params, pa je include proxy_params; prečac.

Kosa crta na kraju je važna. Za aplikaciju pod putanjom:

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

S kosom crtom iza porta /app/login stiže do aplikacije kao /login. Bez nje aplikacija prima cijeli /app/login.

WebSockets

Chat aplikacije, nadzorne ploče uživo i mnogi administratorski paneli koriste WebSockets, kojima trebaju dva dodatna zaglavlja. Dodajte ovaj map jednom, unutar bloka http, na primjer u novu datoteku /etc/nginx/conf.d/websocket.conf:

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

Zatim u location:

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

nginx zatvara proxy vezu koja 60 sekundi ništa ne pošalje; dulji proxy_read_timeout drži tihe WebSocket veze otvorenima. proxy_http_version 1.1 je zadana vrijednost tek od nginxa 1.29.7, a Ubuntu 24.04 dolazi s verzijom 1.24, pa zadržite taj redak.

Korak 3: Besplatni HTTPS uz Certbot

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

Certbot pribavlja besplatni Let's Encrypt certifikat, dodaje HTTPS postavke u vaš server blok i može preusmjeriti HTTP na HTTPS. Certifikat obnavlja automatski; provjerite s sudo certbot renew --dry-run. Više o certifikatima pročitajte u vodiču kako dobiti besplatni SSL certifikat.

Rješavanje grešaka 502, 504 i 413

GreškaUobičajeni uzrokRješenje
502 Bad Gatewaynginx ne može doći do aplikacije: zaustavljena je, srušila se ili sluša na drugom portu ili adresiPokrenite aplikaciju, provjerite port s curl http://127.0.0.1:PORT, pročitajte /var/log/nginx/error.log
504 Gateway TimeoutAplikaciji je za odgovor trebalo više od 60 sekundiUbrzajte zahtjev ili povećajte proxy_read_timeout za tu lokaciju
413 Request Entity Too LargeUpload je veći od nginxova zadanog ograničenja od 1 MBPostavite client_max_body_size 50m; u server bloku
Petlja preusmjeravanjaAplikacija ne zna da je posjetitelj koristio HTTPSPrenesite X-Forwarded-Proto i recite aplikaciji da je iza proxyja

Nakon svake promjene: sudo nginx -t, zatim sudo systemctl reload nginx.

Pokrenite ga na HytHost VPS-u

Reverse proxyju treba server na kojem upravljate portovima 80 i 443. HytHost VPS paketi rade na KVM-u s punim root pristupom, SSD pohranom i DDoS zaštitom; odaberite Ubuntu 24.04 i slijedite gornje korake. Pokrećete aplikacije u kontejnerima? Najprije postavite Docker uz vodič kako instalirati Docker na Ubuntu i vežite portove kontejnera na 127.0.0.1 kako bi do njih mogao doći samo nginx.

FAQ

Česta pitanja

Reverse proxy prosljeđuje zahtjeve jednoj ili više aplikacija iza sebe. Load balancer je reverse proxy koji raspoređuje zahtjeve na više kopija iste aplikacije. nginx može oboje, uz blok upstream koji navodi kopije.

nginx ne može doći do aplikacije iza sebe. Provjerite radi li aplikacija i sluša li na adresi i portu iz proxy_pass te pročitajte /var/log/nginx/error.log za točan razlog.

Ne, kad aplikacija radi na istom serveru. nginx upravlja HTTPS-om za posjetitelje i s aplikacijom komunicira običnim HTTP-om na 127.0.0.1, koji nikad ne napušta stroj.

Dajte svakoj aplikaciji vlastiti server blok s vlastitim server_name, poput app.example.com i api.example.com, svaki s proxy_pass na drugi port.

Da. Objavite port svakog kontejnera samo na 127.0.0.1 i usmjerite proxy_pass na njega. Tako kontejneri ostaju izvan javnog interneta, što je važno jer Dockerovi objavljeni portovi zaobilaze ufw.

Hostajte svoje aplikacije iza nginxa

HytHost KVM VPS paketi s punim root pristupom, SSD pohranom i DDoS zaštitom kreću od €2.92/mj.

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

Je li ti ovaj vodič pomogao?