VPS · Rehber

nginx Reverse Proxy Rehberi

Güncellendi October 11, 2026 4 dk okuma

Bu sayfada
  1. Reverse proxy ne işe yarar
  2. Adım 1: nginx'i kurun
  3. Adım 2: Proxy server bloğunu oluşturun
  4. Başlıklar ve sondaki eğik çizgi
  5. WebSockets
  6. Adım 3: Certbot ile ücretsiz HTTPS
  7. 502, 504 ve 413 hatalarını çözme
  8. HytHost VPS üzerinde çalıştırın
  9. SSS

Reverse proxy, uygulamalarınızın önünde durur ve ziyaretçilerin isteklerini onlara iletir. Önde nginx olduğunda, bir portta çalışan Node.js uygulaması, Docker container'ı ya da panel https://app.example.com hâline gelir; HTTPS, doğru başlıklar ve her şeyi yönetebileceğiniz tek bir yerle.

Bu rehber, nginx'i Ubuntu'da adım adım reverse proxy olarak kurar: server bloğu, başlıklar, WebSockets, ücretsiz HTTPS ve en çok karşılaşacağınız hatalar.

Reverse proxy ne işe yarar

  • Tek bir genel giriş noktası. nginx 80 ve 443 portlarını dinler ve her alan adını ya da yolu doğru uygulamaya yönlendirir; böylece uygulamaların kendisi hiçbir zaman doğrudan internete açılmaz.
  • HTTPS tek yerde. Sertifikaları nginx yönetir; arkasındaki uygulamalar localhost üzerinde düz HTTP konuşabilir.
  • Tek sunucuda birden fazla uygulama. app.example.com, api.example.com ve example.com/blog her biri farklı bir servise gidebilir.
  • Ekstralar: sıkıştırma, önbellekleme, yükleme limitleri ve erişim kuralları, uygulamaya dokunmadan.

Adım 1: nginx'i kurun

sudo apt update
sudo apt install nginx

http://your-server-ip adresini açın, nginx karşılama sayfasını görmelisiniz. ufw kullanıyorsanız web trafiğine sudo ufw allow 'Nginx Full' ile izin verin.

Uygulamanızın çalıştığından ve sunucunun kendisinden erişilebilir olduğundan emin olun, örneğin curl http://127.0.0.1:3000 ile. Bu başarısız olursa nginx de başarısız olur.

nginx'i ve uygulamalarınızı tam root erişimiyle çalıştırın: HytHost KVM VPS paketleri €2.92/ay'dan başlar.

VPS paketlerini gör

Adım 2: Proxy server bloğunu oluşturun

Ubuntu'da her site /etc/nginx/sites-available/ içinde bir dosya alır ve sites-enabled içindeki bir bağlantıyla etkinleştirilir. /etc/nginx/sites-available/app.example.com dosyasını oluşturun:

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

Etkinleştirin, yapılandırmayı test edin ve yeniden yükleyin:

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

Alan adının A kaydını sunucunuza yönlendirin; artık http://app.example.com uygulamanızı gösterir. Yeniden yüklemeden önce her zaman nginx -t çalıştırın: yazım hatalarını siteyi çökertmeden yakalar.

Başlıklar ve sondaki eğik çizgi

  • Host, ziyaretçinin istediği alan adını iletir. Bu olmadan nginx proxy_pass içindeki adresi gönderir ve bağlantıları host'tan oluşturan uygulamalar bozulur.
  • X-Real-IP ve X-Forwarded-For, ziyaretçinin IP adresini iletir. Bunlar olmadan her istek 127.0.0.1 adresinden gelmiş gibi görünür.
  • X-Forwarded-Proto, uygulamaya ziyaretçinin HTTPS kullanıp kullanmadığını söyler; böylece uygulama döngüye girerek yönlendirme yapmaz.

Ubuntu'nun nginx paketi bu satırları /etc/nginx/proxy_params içinde getirir, yani include proxy_params; bir kısayoldur.

Sondaki eğik çizgi önemlidir. Bir yol altındaki uygulama için:

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

Porttan sonra eğik çizgi varsa /app/login uygulamaya /login olarak ulaşır. Yoksa uygulama /app/login yolunun tamamını alır.

WebSockets

Sohbet uygulamaları, canlı paneller ve birçok yönetim paneli WebSockets kullanır; bunlar iki ek başlık gerektirir. Bu map'i bir kez, http bloğunun içine ekleyin, örneğin yeni bir /etc/nginx/conf.d/websocket.conf dosyasına:

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

Ardından location içinde:

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

nginx, 60 saniye boyunca hiçbir şey göndermeyen proxy bağlantısını kapatır; daha uzun bir proxy_read_timeout sessiz WebSocket bağlantılarını açık tutar. proxy_http_version 1.1 yalnızca nginx 1.29.7'den itibaren varsayılandır ve Ubuntu 24.04 1.24 sürümüyle gelir, bu yüzden satırı koruyun.

Adım 3: Certbot ile ücretsiz HTTPS

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

Certbot ücretsiz bir Let's Encrypt sertifikası alır, HTTPS ayarlarını server bloğunuza ekler ve HTTP'yi HTTPS'ye yönlendirebilir. Sertifikayı otomatik olarak yeniler; sudo certbot renew --dry-run ile kontrol edin. Sertifikalar hakkında daha fazlası için: ücretsiz SSL sertifikası nasıl alınır.

502, 504 ve 413 hatalarını çözme

HataOlası nedenÇözüm
502 Bad Gatewaynginx uygulamaya ulaşamıyor: uygulama durdurulmuş, çökmüş ya da başka bir port veya adreste dinliyorUygulamayı başlatın, portu curl http://127.0.0.1:PORT ile kontrol edin, /var/log/nginx/error.log dosyasını okuyun
504 Gateway TimeoutUygulamanın yanıt vermesi 60 saniyeden uzun sürdüİsteği hızlandırın ya da o location için proxy_read_timeout değerini artırın
413 Request Entity Too LargeYükleme, nginx'in varsayılan 1 MB limitinden büyükServer bloğunda client_max_body_size 50m; ayarlayın
Yönlendirme döngüsüUygulama, ziyaretçinin HTTPS kullandığını bilmiyorX-Forwarded-Proto başlığını iletin ve uygulamaya bir proxy arkasında olduğunu söyleyin

Her değişiklikten sonra: sudo nginx -t, ardından sudo systemctl reload nginx.

HytHost VPS üzerinde çalıştırın

Bir reverse proxy, 80 ve 443 portlarını kontrol ettiğiniz bir sunucuya ihtiyaç duyar. HytHost VPS paketleri tam root erişimi, SSD depolama ve DDoS korumasıyla KVM üzerinde çalışır; Ubuntu 24.04'ü seçin ve yukarıdaki adımları izleyin. Uygulamalarınızı container'larda mı çalıştırıyorsunuz? Önce Ubuntu'ya Docker nasıl kurulur rehberiyle Docker'ı kurun ve container portlarını 127.0.0.1 adresine bağlayın, böylece onlara yalnızca nginx erişebilir.

SSS

Sıkça sorulan sorular

Reverse proxy, istekleri arkasındaki bir veya daha fazla uygulamaya iletir. Load balancer ise istekleri aynı uygulamanın birden fazla kopyasına dağıtan bir reverse proxy'dir. nginx, kopyaları listeleyen bir upstream bloğuyla ikisini de yapabilir.

nginx arkasındaki uygulamaya ulaşamıyor. Uygulamanın çalıştığını ve proxy_pass içindeki adres ve portta dinlediğini kontrol edin; kesin neden için /var/log/nginx/error.log dosyasını okuyun.

Uygulama aynı sunucuda çalışıyorsa hayır. nginx ziyaretçiler için HTTPS'yi yönetir ve uygulamayla 127.0.0.1 üzerinden düz HTTP ile konuşur; bu trafik makineden hiç çıkmaz.

Her uygulamaya kendi server_name değeriyle kendi server bloğunu verin, örneğin app.example.com ve api.example.com; her biri farklı bir porta giden bir proxy_pass içersin.

Evet. Her container'ın portunu yalnızca 127.0.0.1 üzerinde yayınlayın ve proxy_pass ile oraya yönlendirin. Bu, container'ları genel internetten uzak tutar; bu önemlidir çünkü Docker'ın yayınlanan portları ufw'yi atlar.

Uygulamalarınızı nginx arkasında barındırın

Tam root erişimi, SSD depolama ve DDoS korumalı HytHost KVM VPS paketleri €2.92/ay'dan başlar.

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

Bu rehber işine yaradı mı?