VPS · Bələdçi

nginx reverse proxy bələdçisi

Yeniləndi October 11, 2026 4 dəq oxuma

Bu səhifədə
  1. Reverse proxy nə edir
  2. Addım 1: nginx-i quraşdırın
  3. Addım 2: Proxy server blokunu yaradın
  4. Başlıqlar və sondakı slash
  5. WebSockets
  6. Addım 3: Certbot ilə pulsuz HTTPS
  7. 502, 504 və 413 xətalarının həlli
  8. HytHost VPS-də işlədin
  9. FAQ

Reverse proxy tətbiqlərinizin qarşısında dayanır və ziyarətçilərin sorğularını onlara ötürür. Önündə nginx olduqda, hansısa portda işləyən Node.js tətbiqi, Docker konteyneri və ya idarəetmə paneli https://app.example.com olur: HTTPS, düzgün başlıqlar və hər şeyi idarə etmək üçün bir yer.

Bu bələdçi nginx-i Ubuntu-da addım-addım reverse proxy kimi qurur: server bloku, başlıqlar, WebSockets, pulsuz HTTPS və ən çox rastlaşacağınız xətalar.

Reverse proxy nə edir

  • Bir ümumi giriş nöqtəsi. nginx 80 və 443 portlarını dinləyir və hər domeni və ya yolu lazımi tətbiqə yönləndirir, beləliklə tətbiqlərin özləri heç vaxt birbaşa internetə açılmır.
  • HTTPS bir yerdə. Sertifikatları nginx idarə edir; arxasındakı tətbiqlər localhost üzərində adi HTTP ilə işləyə bilər.
  • Bir serverdə bir neçə tətbiq. app.example.com, api.example.com və example.com/blog hər biri ayrı xidmətə yönələ bilər.
  • Əlavələr: sıxılma, keşləmə, yükləmə limitləri və giriş qaydaları, tətbiqə toxunmadan.

Addım 1: nginx-i quraşdırın

sudo apt update
sudo apt install nginx

http://your-server-ip ünvanını açın, nginx xoş gəlmisiniz səhifəsini görməlisiniz. ufw istifadə edirsinizsə, veb trafikinə sudo ufw allow 'Nginx Full' ilə icazə verin.

Tətbiqinizin işlədiyinə və serverin özündən əlçatan olduğuna əmin olun, məsələn curl http://127.0.0.1:3000 ilə. Bu alınmasa, nginx də alınmayacaq.

nginx-i və tətbiqlərinizi tam root girişi ilə işlədin: HytHost KVM VPS planları €2.92/ay-dan başlayır.

VPS planlarına baxın

Addım 2: Proxy server blokunu yaradın

Ubuntu-da hər sayt /etc/nginx/sites-available/ qovluğunda bir fayl alır və sites-enabled içindəki keçidlə aktivləşdirilir. /etc/nginx/sites-available/app.example.com faylını yaradın:

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;
    }
}

Onu aktivləşdirin, konfiqurasiyanı yoxlayın və yenidən yükləyin:

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

Domenin A qeydini serverinizə yönləndirin və artıq http://app.example.com tətbiqinizi göstərir. Yenidən yükləmədən əvvəl həmişə nginx -t işlədin: o, yazı səhvlərini sayt çökmədən tutur.

Başlıqlar və sondakı slash

  • Host ziyarətçinin istədiyi domeni ötürür. Onsuz nginx proxy_pass içindəki ünvanı göndərir və keçidləri host-dan quran tətbiqlər pozulur.
  • X-Real-IP və X-Forwarded-For ziyarətçinin IP ünvanını ötürür. Onlarsız hər sorğu 127.0.0.1 ünvanından gəlmiş kimi görünür.
  • X-Forwarded-Proto tətbiqə ziyarətçinin HTTPS istifadə edib-etmədiyini bildirir ki, tətbiq dövrəyə düşüb yönləndirmə etməsin.

Ubuntu-nun nginx paketi bu sətirləri /etc/nginx/proxy_params faylında gətirir, ona görə include proxy_params; qısa yoldur.

Sondakı slash vacibdir. Bir yol altında olan tətbiq üçün:

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

Portdan sonra slash olduqda /app/login tətbiqə /login kimi çatır. Onsuz tətbiq tam /app/login yolunu alır.

WebSockets

Çat tətbiqləri, canlı panellər və bir çox admin panellər WebSockets istifadə edir və onlara iki əlavə başlıq lazımdır. Bu map-i bir dəfə, http blokunun içinə əlavə edin, məsələn yeni /etc/nginx/conf.d/websocket.conf faylında:

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

Sonra location içində:

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

nginx 60 saniyə ərzində heç nə göndərməyən proxy bağlantısını bağlayır; daha uzun proxy_read_timeout sakit WebSocket bağlantılarını açıq saxlayır. proxy_http_version 1.1 yalnız nginx 1.29.7-dən etibarən standartdır, Ubuntu 24.04 isə 1.24 versiyası ilə gəlir, ona görə bu sətri saxlayın.

Addım 3: Certbot ilə pulsuz HTTPS

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

Certbot pulsuz Let's Encrypt sertifikatı alır, HTTPS ayarlarını server blokunuza əlavə edir və HTTP-ni HTTPS-ə yönləndirə bilər. Sertifikatı avtomatik yeniləyir; sudo certbot renew --dry-run ilə yoxlayın. Sertifikatlar haqqında ətraflı: pulsuz SSL sertifikatını necə almaq olar.

502, 504 və 413 xətalarının həlli

XətaAdi səbəbHəll
502 Bad Gatewaynginx tətbiqə çata bilmir: tətbiq dayandırılıb, çöküb və ya başqa port ya ünvanda dinləyirTətbiqi başladın, portu curl http://127.0.0.1:PORT ilə yoxlayın, /var/log/nginx/error.log faylını oxuyun
504 Gateway TimeoutTətbiqin cavab verməsi 60 saniyədən çox çəkdiSorğunu sürətləndirin və ya həmin location üçün proxy_read_timeout dəyərini artırın
413 Request Entity Too LargeYükləmə nginx-in standart 1 MB limitindən böyükdürServer blokunda client_max_body_size 50m; təyin edin
Yönləndirmə dövrəsiTətbiq ziyarətçinin HTTPS istifadə etdiyini bilmirX-Forwarded-Proto ötürün və tətbiqə proxy arxasında olduğunu bildirin

Hər dəyişiklikdən sonra: sudo nginx -t, sonra sudo systemctl reload nginx.

HytHost VPS-də işlədin

Reverse proxy-yə 80 və 443 portlarını idarə etdiyiniz server lazımdır. HytHost VPS planları tam root girişi, SSD yaddaş və DDoS qorunması ilə KVM üzərində işləyir; Ubuntu 24.04 seçin və yuxarıdakı addımları izləyin. Tətbiqlərinizi konteynerlərdə işlədirsiniz? Əvvəlcə Ubuntu-da Docker-i necə quraşdırmaq olar bələdçisi ilə Docker-i qurun və konteynerlərin portlarını 127.0.0.1 ünvanına bağlayın ki, onlara yalnız nginx çata bilsin.

FAQ

Tez-tez verilən suallar

Reverse proxy sorğuları arxasındakı bir və ya bir neçə tətbiqə ötürür. Load balancer isə sorğuları eyni tətbiqin bir neçə nüsxəsi arasında paylayan reverse proxy-dir. nginx nüsxələri sadalayan upstream bloku ilə hər ikisini edə bilir.

nginx arxasındakı tətbiqə çata bilmir. Tətbiqin işlədiyini və proxy_pass içindəki ünvan və portda dinlədiyini yoxlayın, dəqiq səbəb üçün isə /var/log/nginx/error.log faylını oxuyun.

Tətbiq eyni serverdə işləyirsə, xeyr. nginx ziyarətçilər üçün HTTPS-i idarə edir və tətbiqlə 127.0.0.1 üzərində adi HTTP ilə danışır, bu trafik maşından heç vaxt çıxmır.

Hər tətbiqə öz server_name dəyəri olan ayrıca server bloku verin, məsələn app.example.com və api.example.com, hər biri fərqli porta yönələn proxy_pass ilə.

Bəli. Hər konteynerin portunu yalnız 127.0.0.1 üzərində dərc edin və proxy_pass-i ora yönləndirin. Bu, konteynerləri ümumi internetdən uzaq saxlayır; bu vacibdir, çünki Docker-in dərc olunmuş portları ufw-ni yan keçir.

Tətbiqlərinizi nginx arxasında host edin

Tam root girişi, SSD yaddaş və DDoS qorunması olan HytHost KVM VPS planları €2.92/ay-dan başlayır.

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

Bu bələdçi sizə kömək etdi?