Uporaba NGINX-a kot po­vra­tne­ga proxyja je pri­lju­blje­na možnost. Za na­sta­vi­tev morate le namestiti NGINX, ustvariti kon­fi­gu­ra­cij­sko datoteko in pri­la­go­di­ti na­sta­vi­tve strežnika. Z Gu­ni­cor­nom lahko tudi preverite, ali je bila na­me­sti­tev uspešna.

Kako nastaviti NGINX kot povratni proxy

Obratni proxyji lahko pri­po­mo­re­jo k večji varnosti, pri­la­go­dlji­vo­sti in raz­po­lo­žlji­vo­sti virov. Nameščeni so med od­je­mal­cem in stre­žni­kom, upo­rab­ni­ki pa jih ne opazijo. Obratni proxy NGINX je zelo pri­po­ro­člji­va rešitev za obdelavo dohodnih zahtevkov. V na­da­lje­va­nju bomo pojasnili, kako ga namestiti in nastaviti v sistemu Ubuntu 22.04.

Kakšne so sistemske zahteve za NGINX kot povratni proxy?

Za na­sta­vi­tev re­ver­zne­ga proxyja NGINX v sistemu Ubuntu 22.04 boste po­tre­bo­va­li naslednje:

  • Popolnoma na­sta­vljen strežnik Ubuntu
  • IP naslov strežnika ali Unix domenski vtičnik
  • Domena vašega strežnika
  • sudo pri­vi­le­gi­jev za strežnik

Na­me­sti­tev NGINX-a kot po­vra­tne­ga proxyja

Najprej po­so­do­bi­te re­po­zi­to­rij prek terminala, da boste imeli dostop do naj­no­vej­ših paketov. Nato namestite NGINX s pomočjo ukaza apt install. Tukaj je koda:

$ sudo apt update
$ sudo apt install nginx
bash

Potrdite z [Y] in pri­ti­sni­te [Enter], da se na­sta­vi­tve shranijo.

Nato nastavite požarni zid tako, da bo imel NGINX dostop do vašega strežnika. Izjemo lahko dodate z na­sle­dnjim ukazom:

$ sudo ufw allow 'Nginx HTTP'
bash

Nato preverite, ali je na­me­sti­tev uspela:

$ systemctl status nginx
bash

Če je bil NGINX pravilno nameščen, se bo prikazal izpis, ki bo izgledal takole:

nginx.service - A high performance web server and a reverse proxy server
      Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
      Active: active (running) since Mon 2024-06-24 06:52:46 UTC; 39min ago
         Docs: man:nginx(8)
    Main PID: 9919 (nginx)
        Tasks: 2 (limit: 2327)
      Memory: 2.9M
          CPU: 50ms
      CGroup: /system.slice/nginx.service
                 ├─9919 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
                 └─9920 "nginx: worker process"
bash

Ustvar­ja­nje kon­fi­gu­ra­cij­ske datoteke in pri­la­ga­ja­nje strežnika

Sedaj lahko nastavite stre­žni­ški blok, da pri­pra­vi­te reverzni proxy NGINX za vaš sistem. Za to ustvarite in odprite novo kon­fi­gu­ra­cij­sko datoteko z be­se­dil­nim ure­je­val­ni­kom Nano. Vnesite naslednji ukaz in ne pozabite zamenjati na­do­me­stne­ga znaka »your_domain« z imenom vaše domene:

$ sudo nano /etc/nginx/sites-available/your_domain
bash

Ko je datoteka odprta, vnesite naslednjo vsebino. Na­do­me­sti­te na­do­me­stna imena »your_domain« in »server_address« z domeno ter IP-naslovom ali Unixovim domenskim vtičnikom vašega strežnika:

server {
    listen 80;
    listen [::]:80;
    server_name your_domain www.your_domain;
        
    location / {
        proxy_pass http://server_address;
        include /etc/nginx/proxy_params;
    }
}
txt

Shranite in zaprite datoteko. Prikazana vsebina pred­sta­vlja privzeto na­sta­vi­tev za NGINX. Uporablja vrata 80 za od­go­var­ja­nje na zahteve iz vaše domene in strežnika. proxy_pass so ključni del delovanja NGINX-a kot po­vra­tne­ga proxyja. Po potrebi lahko nastavite tudi dodatne strežnike.

Nato ustvarite povezavo do imenika sites-enabled, do katerega NGINX dostopa na začetku. Uporabite naslednji ukaz in ne pozabite zamenjati na­do­me­stne­ga znaka »your_domain«:

$ sudo ln -s /etc/nginx/sites-available/your_domain/etc/nginx/sites-enabled/
bash

Preverite, ali v na­sta­vi­tvah obstajajo napake:

$ sudo nginx -t
bash

Če se ne prikaže nobeno sporočilo o napaki, lahko zdaj ponovno zaženete reverzni proxy NGINX, da se na­sta­vi­tve uporabijo. Za to vnesite naslednji ukaz:

$ sudo systemctl restart nginx
bash

S tem ste končali z na­sta­vi­tvi­jo strežnika NGINX kot po­vra­tne­ga proxyja. V na­sle­dnjem poglavju bomo pojasnili, kako preveriti delovanje proxyja. To pre­iz­ku­ša­nje pa je neobvezno.

Pre­ver­ja­nje obratnega proxyja NGINX z Gu­ni­cor­nom

Če se odločite, da boste pre­iz­ku­si­li svoj NGINX reverzni proxy, lahko za to običajno uporabite svoj strežnik. Če upo­ra­blja­te svoj strežnik, ga odprite prek ukazne vrstice. Al­ter­na­tiv­no lahko uporabite enostaven HTTP-spletni strežnik Gunicorn, ki zelo dobro deluje z NGINX reverznim proxyjem. Najprej po­so­do­bi­te pakete in namestite strežnik:

$ sudo apt update
$ sudo apt install gunicorn
bash

Nato ustvarite preprosto funkcijo, ki jo boste poslali kot odgovor HTTP v brskalnik. Ponovno uporabite nano:

$ nano test.py
bash

Odpri datoteko in vnesi naslednjo kodo:

def app(environ, start_response):
	start_response("200 OK", [])
	return iter([b"This is a test"])
txt

Nato datoteko shranite in zaprite. Nato zaženite Gunicorn in odprite testni modul:

$ gunicorn --worker=2 test:app
bash

Izpis naj bi bil približno takšen:

[2024-06-24 07:09:29 +0000] [10568] [INFO] Starting gunicorn 20.1.0
[2024-06-24 09:14:37 +0000] [10568] [INFO] Listening at: http://127.0.0.1 (10568)
[2024-06-24 09:14:37 +0000] [10568] [INFO] Using worker: sync
[2024-06-24 09:14:37 +0000] [10569] [INFO] Booting worker with pid: 10569
[2024-06-24 09:14:37 +0000] [10570] [INFO] Booting worker with pid: 10570
bash

To je potrditev, da Gunicorn ko­mu­ni­ci­ra z naslovom http://127.0.0.1:8000. Nazadnje odprite brskalnik in obiščite domeno, ki ste jo nastavili v NGINX-u. NGINX-ov povratni proxy bo prikazal sporočilo »To je test«.

Go to Main Menu