AXV

Nginx reverse-proxy

Reverse-proxy tushunchasi, Nginx o'rnatish, server va location bloklari, proxy_pass, X-Forwarded-*, upstream, nginx -t

11-sinfProfessional IT development6-hafta · 18-dars

Bugun nimalarni o'rganamiz?

Reverse-proxy

Nima va nega

Minimal konfiguratsiya

proxy_pass

Yoqish va upstream

nginx -t

Takrorlash

SSH kalitida serverga qaysi kalit qo'yiladi?

Ommaviy (.pub) kalit authorized_keys ga qo'yiladi.
01

Reverse-proxy

Nima va nega

Arxitektura

Mijoz Nginx (80/443) 127.0.0.1:3000 Ilova Ilova tashqariga ochilmaydi

O'rnatish va tekshirish


sudo apt update && sudo apt install -y nginx
sudo systemctl enable --now nginx
sudo systemctl status nginx
ss -lntp | grep ':80 '
  
enable --now Nginx ni hozir ishga tushiradi va server qayta yonganda ham avtomatik yoqadi.

Mini-test

Reverse-proxy nima qiladi?

Mijoz va ilova orasida turadi.
02

Minimal konfiguratsiya

proxy_pass

Konfiguratsiya yo'li

sites-available ln -ssites-enabled nginx -t reload Tekshirmay reload qilmang

app.conf


server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass         http://127.0.0.1:3000;
        proxy_http_version 1.1;
        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;
    }
}
  
Qo'llanmadagi to'liq namunada proxy_read_timeout 60s; va Connection "" ham bor. example.com o'rniga o'z domeningizni yozing.

Mini-test

Qaysi direktiva so'rovni ilovaga uzatadi?

proxy_pass orqa manzilni ko'rsatadi.
03

Yoqish va upstream

nginx -t

Yoqish

Fayl yozish nginx -t reload curl -I Avval -t, keyin reload

Yoqish va upstream


sudo ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/app.conf
sudo nginx -t && sudo systemctl reload nginx
curl -I http://example.com

# upstream bloki:
# upstream app_upstream {
#     server 127.0.0.1:3001;
#     server 127.0.0.1:3002;
# }
  
nginx -t && systemctl reload nginx — xavfsiz juftlik: xato bo'lsa reload bajarilmaydi. HTTPS (Certbot) va yo'naltirish 19-darsda.

Mini-test

Konfiguratsiyani qo'llashdan oldin nima qilinadi?

Sintaksis xatosi Nginx ni to'xtatib qo'yishi mumkin.

Ilovani to'g'ridan-to'g'ri ochish va Nginx orqali

To'g'ridan-to'g'ri

Ilova porti tashqarida, TLS va kesh yo'q
VS

Nginx orqali

Faqat 80/443 ochiq, ilova yopiq, sarlavhalar boshqariladi

Reverse-proxy xavfsizlik va tezlik beradi.

Atamalar. Bosing

Reverse-proxy

bosing

Mijoz so'rovini ichki ilovaga uzatuvchi vositachi

proxy_pass

bosing

So'rovni qaysi manzilga uzatish

upstream

bosing

Orqa ilovalar guruhi

X-Forwarded-For

bosing

Asl mijoz IP si sarlavhasi

Ilovani Nginx orqali ochish

1. Ilova

127.0.0.1:3000 da ishlasin.

2. Konfig

server va location.

3. Tekshiring

nginx -t, reload, curl.

Muhim direktivalar

DirektivaVazifaMisol
listenport80
server_namedomenexample.com
locationyo'l bo'yicha qoidalocation /
proxy_passorqa manzilhttp://127.0.0.1:3000
proxy_set_headersarlavha berishHost $host

Pastga bosing: direktivalar

Test ilovani ochish

  1. python3 -m http.server 3000 bilan test ilovani ishga tushiring.
  2. sites-available/app.conf ni yozing va symlink qiling.
  3. sudo nginx -t, reload, so'ng curl -I http://localhost bilan tekshiring.

Tekshiruvsiz reload


sudo systemctl reload nginx
  

Tekshiruvsiz reload


sudo nginx -t && sudo systemctl reload nginx
  

Nginx raqamlarda

0
— HTTP porti, 443 — HTTPS porti
0
ta asosiy sarlavha: Host, X-Real-IP, X-Forwarded-For/Proto
0
ta upstream algoritmi: round-robin, ip_hash, least_conn

Nginx — ilova oldidagi eshik.

Amaliy topshiriq 20 daqiqa

OsonNginx o'rnating: Nginx ni o'rnating, xizmatni yoqing va holatini tekshiring.
OsonPort tekshiring: Nginx 80-portni tinglayotganini qanday tekshirasiz?
O'rtaProxy yozing: example.com so'rovlarini 127.0.0.1:3000 ga uzating.
O'rtaSarlavhalar: Ilova mijoz IP va sxemani (http/https) bilishi uchun sarlavhalar qo'shing.
QiyinYoqish: Konfiguratsiyani ulang, tekshiring va xavfsiz qo'llang.
BonusUpstream: Ikki ilovaga (3001, 3002) yukni taqsimlang.

Dars xulosasi

Reverse-proxy

Ilova yopiq, Nginx 80/443 da.

Konfig

server, location, proxy_pass, sarlavhalar.

Yoqish

nginx -t va reload; upstream.

Uyga vazifa: Nginx reverse-proxy konfiguratsiyasi.

Keyingi dars: TLS va diagnostika

HTTPS, Certbot, port forwarding

7-hafta · 19-dars