Açık Kaynak Uygulamalar

    Nginx Proxy Manager Nedir ve Kolay Ters Proxy Kurulumu

    Ters proxy ve otomatik SSL yönetimini görsel arayüzle sunan açık kaynak Nginx Proxy Manager aracının rehberi.

    12 dk okuma Güncellendi: 10 Temmuz 2026

    Tek bir sunucuda birden fazla uygulama çalıştırdığınızda her birine ayrı port üzerinden erişmek hızla içinden çıkılmaz bir hale gelir. app.example.com:8080, panel.example.com:9000, wiki.example.com:3000 gibi adresleri hem hatırlamak hem de her biri için ayrı SSL sertifikası ayarlamak, güvenlik duvarında portları açık tutmak ciddi bir uğraş demektir. Nginx Proxy Manager (kısaca NPM) tam olarak bu karmaşayı ortadan kaldırmak için tasarlanmış, açık kaynak ve ücretsiz bir araçtır. Arka planda güçlü Nginx web sunucusunu çalıştırır, ancak yapılandırma dosyalarıyla boğuşmak yerine size temiz bir web arayüzü sunar.

    Kıdemli bir sistem yöneticisi olarak yıllarca .conf dosyalarını elle düzenledikten sonra NPM'i gördüğümde en çok takdir ettiğim şey, Let's Encrypt sertifikalarının tek tıkla alınıp otomatik yenilenmesiydi. Bir müşteriye "yeni uygulamanı yayına almak beş dakika sürer" dediğimde artık abartmıyorum. Bu rehberde NPM'in ne olduğunu, ters proxy mantığını, Docker ile kurulumunu, proxy host tanımlamayı, otomatik SSL almayı ve erişim listeleriyle güvenliği pratik örneklerle adım adım anlatacağım. Amacım, rehberi bitirdiğinizde kendi sunucunuzda ilk proxy host'unuzu güvenle ayağa kaldırabilmeniz.

    Nginx Proxy Manager Neden Tercih Ediliyor#

    Nginx Proxy Manager'ın popülerliği tek bir cümleyle özetlenebilir: Nginx'in gücünü, komut satırı bilgisi gerektirmeden sunar. Nginx dünyanın en yaygın kullanılan ters proxy ve web sunucularından biridir, ancak yapılandırması server, location, upstream blokları ve düzinelerce direktif içerir. Yeni başlayan biri için bir yazım hatası tüm siteyi kapatabilir. NPM bu katmanı soyutlar; siz arayüzde alan adı ve hedef adresi girersiniz, o da geçerli bir Nginx yapılandırması üretir.

    Aracın en güçlü yanı SSL yönetimidir. Let's Encrypt ile ücretsiz sertifika almak normalde certbot kurulumu, doğrulama yöntemi seçimi ve yenileme cron görevleri gerektirir. NPM bunların hepsini kutu içinde hallederek sertifikayı otomatik alır ve süresi dolmadan yeniler. Aşağıdaki tablo NPM'i geleneksel yaklaşımlarla kıyaslar.

    ÖzellikElle Nginx + CertbotNginx Proxy ManagerTraefik
    Yapılandırma.conf dosyalarıWeb arayüzüEtiket/YAML
    SSL otomasyonuManuel kurulumTek tık, otomatikOtomatik
    Öğrenme eğrisiYüksekDüşükOrta-yüksek
    Görsel panelYokVarSınırlı
    Erişim kontrolüElle yazılırHazır arayüzMiddleware
    Docker uyumuİyiÇok iyiMükemmel

    Traefik gibi alternatifler konteyner yoğun ortamlarda güçlüdür ama daha dik bir öğrenme eğrisi ister. NPM, özellikle küçük ve orta ölçekli sunucularda, ev laboratuvarlarında ve birkaç uygulamayı düzenli tutmak isteyen ekiplerde en pratik dengeyi sunar.

    Ters Proxy Mantığı ve NPM'in Rolü#

    NPM'i anlamak için önce ters proxy kavramını netleştirmek gerekir. Sıradan (ileri) bir proxy, istemcinin isteğini dışarıya taşır; ters proxy ise tam tersini yapar. Dışarıdan gelen istekleri karşılar ve arka plandaki doğru uygulamaya yönlendirir. Ziyaretçi yalnızca proxy'nin adresini görür, arkadaki sunucuların iç yapısını asla bilmez.

    Somut bir senaryo düşünelim. Sunucunuzda üç uygulama var: 3000 portunda bir blog, 8080 portunda bir yönetim paneli ve 5601 portunda bir log görüntüleyici. İnternet üzerinden bu portları tek tek açmak hem güvensiz hem de çirkindir. NPM devreye girer, 80 ve 443 portlarını dinler, gelen alan adına bakar ve isteği uygun iç adrese iletir.

    # NPM'in arka planda ürettiği yapıya benzer basit bir örnek
    server {
        server_name blog.example.com;
        location / {
            proxy_pass http://127.0.0.1:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    

    Bu blokları elle yazmak yerine NPM arayüzünde blog.example.com alan adını 127.0.0.1 ve 3000 portuna eşlerseniz aynı sonucu saniyeler içinde alırsınız. Nginx'in temel kavramlarını daha derinlemesine öğrenmek isterseniz Ubuntu üzerinde Nginx kurulumu rehberimiz iyi bir başlangıç noktasıdır. Ters proxy sayesinde tek bir giriş noktası, merkezi SSL, tek yerden erişim kontrolü ve temiz alan adı yapısı elde edersiniz.

    Docker ile Nginx Proxy Manager Kurulumu#

    NPM'in önerilen kurulum yöntemi Docker'dır çünkü tüm bağımlılıkları (Nginx, veritabanı, Node uygulaması) tek bir tanımlı ortamda paketler. Sunucunuzda Docker ve Docker Compose kurulu değilse önce onları yükleyin. Ubuntu üzerinde hızlı kurulum şöyledir.

    # Docker ve Compose eklentisini kur
    curl -fsSL https://get.docker.com | sh
    sudo usermod -aG docker $USER
    # Oturumu yenilemek için çıkış yapıp tekrar bağlanın
    docker --version
    docker compose version
    

    Ardından NPM için bir çalışma dizini oluşturup docker-compose.yml dosyasını hazırlayın. NPM varsayılan olarak dahili bir SQLite veritabanı kullanabilir, ancak üretim ortamı için ayrı bir MariaDB önerilir.

    services:
      npm:
        image: jc21/nginx-proxy-manager:latest
        restart: unless-stopped
        ports:
          - "80:80"      # HTTP trafiği
          - "443:443"    # HTTPS trafiği
          - "81:81"      # Yönetim arayüzü
        environment:
          DB_MYSQL_HOST: "db"
          DB_MYSQL_PORT: 3306
          DB_MYSQL_USER: "npm"
          DB_MYSQL_PASSWORD: "guclu_bir_parola"
          DB_MYSQL_NAME: "npm"
        volumes:
          - ./data:/data
          - ./letsencrypt:/etc/letsencrypt
        depends_on:
          - db
    
      db:
        image: jc21/mariadb-aria:latest
        restart: unless-stopped
        environment:
          MYSQL_ROOT_PASSWORD: "root_parola"
          MYSQL_DATABASE: "npm"
          MYSQL_USER: "npm"
          MYSQL_PASSWORD: "guclu_bir_parola"
        volumes:
          - ./mysql:/var/lib/mysql
    

    Dosyayı kaydettikten sonra dizini ayağa kaldırmak tek komuttur.

    docker compose up -d
    docker compose ps    # Konteynerlerin çalıştığını doğrulayın
    docker compose logs -f npm   # İlk açılış günlüklerini izleyin
    

    Birkaç saniye içinde iki konteyner de Up durumuna geçer. Konteynerlerinizi tek tek komut satırından yönetmek yerine görsel bir panel istiyorsanız Portainer kurarak NPM dahil tüm servislerinizi tek ekrandan izleyebilirsiniz. Bu kurulumu barındırmak için düşük gecikmeli bir altyapı önemlidir; kendi projeleriniz için sanal sunucu veya daha yüksek performans gerektiren yükler için VDS sunucu seçeneklerimize göz atabilirsiniz.

    İlk Giriş ve Arayüzü Tanımak#

    Kurulum tamamlandığında yönetim arayüzü 81 portundan erişilebilir hale gelir. Tarayıcınızda http://sunucu_ip_adresi:81 adresini açın. NPM ilk girişte sabit bir varsayılan hesap sunar ve güvenlik için bunu hemen değiştirmenizi ister.

    # NPM varsayılan giriş bilgileri
    Email    = [email protected]
    Password = changeme
    

    İlk girişten sonra sistem sizi kendi e-posta adresinizi ve güçlü bir parolayı belirlemeye zorlar. Bu adımı asla atlamayın; çünkü NPM arayüzünü internete açtığınızda varsayılan bilgilerle bırakmak tüm alan adı yönlendirmelerinizi saldırıya açık hale getirir.

    Panelin üst menüsünde dört ana bölüm bulunur. Hosts bölümü proxy host, yönlendirme ve akış tanımlarını içerir. SSL Certificates sertifikalarınızı listeler. Access Lists erişim kontrol kurallarını barındırır. Users ise birden fazla yöneticiyle çalışıyorsanız hesap yönetimini sağlar. Panele alışmak için birkaç dakika ayırın; arayüz sade olsa da her bölümün kendine has ince ayarları vardır. Yönetim portu 81'i mümkünse yalnızca güvenlik duvarınızın arkasından veya VPN üzerinden erişilebilir tutmanızı öneririm.

    Proxy Host Ekleme Adım Adım#

    NPM'in kalbi proxy host tanımlarıdır. Yeni bir uygulamayı yayına almak için Hosts menüsünden Proxy Hosts sekmesine gidip Add Proxy Host butonuna basın. Karşınıza çıkan formda dört sekme vardır; ilk olarak Details sekmesini dolduracaksınız.

    Domain Names alanına uygulamanızın yayınlanacağı alan adını yazın, örneğin blog.example.com. Scheme genellikle http kalır çünkü NPM ile arka uç arasındaki trafik iç ağdadır. Forward Hostname / IP alanına uygulamanın çalıştığı adresi, Forward Port alanına da portunu girin. Aynı Docker ağındaki bir konteyneri hedefliyorsanız IP yerine konteyner adını kullanabilirsiniz.

    ; Alan adınızın DNS kayıtları sunucu IP'nizi göstermeli
    blog.example.com.   A     203.0.113.10
    panel.example.com.  A     203.0.113.10
    *.example.com.      A     203.0.113.10   ; joker kayıt tercihiyse
    

    Alan adınızın DNS ayarlarını doğru yönlendirmek kritik önemdedir; A kaydı mutlaka sunucunuzun genel IP adresini göstermelidir. Alan adınız yoksa veya yeni bir tane almak istiyorsanız alan adı sayfamızdan hızlıca tedarik edebilirsiniz. Formu doldururken sık kullanılan iki seçeneği de işaretlemenizi öneririm.

    # Details sekmesinde önerilen ayarlar
    Block Common Exploits = açık   ; bilinen saldırı desenlerini engeller
    Websockets Support    = açık   ; canlı panel, sohbet, terminal için
    Cache Assets          = kapalı ; dinamik uygulamalarda kapalı bırakın
    

    Block Common Exploits seçeneği bilinen zararlı istek kalıplarını filtreler ve neredeyse her senaryoda açık olmalıdır. WebSocket kullanan uygulamalar (canlı panolar, terminal arayüzleri, sohbet sistemleri) için Websockets Support seçeneğini açmayı unutmayın; aksi halde bağlantılar kopar. Save dedikten sonra host listeye eklenir ve NPM arka planda ilgili Nginx yapılandırmasını üretip yeniden yükler. Alan adı çözümlemesi doğruysa uygulamanız artık HTTP üzerinden erişilebilir durumdadır.

    Otomatik Let's Encrypt SSL Sertifikası#

    Bir uygulamayı yalnızca HTTP üzerinden yayınlamak günümüzde kabul edilemez; tarayıcılar "güvenli değil" uyarısı gösterir ve arama motorları sıralamada ceza uygular. NPM'in en sevdiğim özelliği burada devreye girer: birkaç tıkla ücretsiz ve otomatik yenilenen SSL sertifikası. Proxy host tanımını düzenleyip SSL sekmesine geçin.

    SSL Certificate açılır menüsünden Request a new SSL Certificate seçeneğini seçin. Ardından üç kutucuğu işaretleyin ve geçerli bir e-posta adresi girin. Let's Encrypt sertifika süresi bittiğinde bu adrese bilgilendirme gönderir, ancak NPM zaten otomatik yenilediği için müdahale etmeniz gerekmez.

    # SSL sekmesinde önerilen yapılandırma
    Force SSL          = açık   ; HTTP'yi otomatik HTTPS'e yönlendirir
    HTTP/2 Support     = açık   ; daha hızlı çoklu istek
    HSTS Enabled       = açık   ; tarayıcıya her zaman HTTPS zorlar
    Use a DNS Challenge = kapalı ; standart senaryoda gerekmez
    

    Force SSL seçeneği HTTP isteklerini otomatik olarak HTTPS'e yönlendirir; bu sayede ziyaretçi hangi adresi yazarsa yazsın güvenli bağlantıya düşer. HTTP/2 Support sayfa yükleme hızını artırır. Joker (wildcard) sertifika almak istiyorsanız Use a DNS Challenge seçeneğini açıp DNS sağlayıcınızın API anahtarını girmeniz gerekir; bu yöntem *.example.com gibi tüm alt alanları tek sertifikayla kapsar.

    Save dediğinizde NPM, Let's Encrypt ile HTTP-01 doğrulaması yapar. Bu doğrulamanın başarılı olması için 80 portunun internetten erişilebilir ve alan adının sunucuya çözümleniyor olması şarttır. İşlem tamamlandığında yeşil kilit simgesiyle sitenize güvenli erişebilirsiniz. Sertifika yönetimi, güvenlik başlıkları ve daha ileri düzey koruma için SSL çözümlerimizi ve uygulama katmanı saldırılarına karşı WAF hizmetimizi incelemenizi öneririm. Yüksek trafikli veya saldırıya açık projelerde DDoS koruma katmanı da bu kurulumu tamamlar.

    Erişim Listeleri ile Güvenliği Sıkılaştırma#

    Bazı uygulamalar herkese açık olmalıdır, ancak yönetim panelleri, izleme araçları veya iç servisler yalnızca yetkili kişilere gösterilmelidir. NPM bunun için Access Lists özelliği sunar. Bu listeler iki tür koruma sağlar: HTTP Basic kimlik doğrulaması (kullanıcı adı ve parola) ve IP tabanlı izin/engelleme kuralları.

    Yeni bir liste oluşturmak için Access Lists menüsünden Add Access List deyin. Authorization sekmesinde erişecek kullanıcılar için kullanıcı adı ve parola çiftleri tanımlayın. Access sekmesinde ise belirli IP adreslerine izin verip geri kalanını engelleyebilirsiniz.

    # Access sekmesi kural örneği
    Allow  203.0.113.0/24   ; ofis ağınız
    Allow  198.51.100.42    ; ev IP adresiniz
    Deny   all              ; diğer herkesi engelle
    Satisfy Any             ; parola VEYA IP eşleşmesi yeterli
    

    Satisfy ayarı önemli bir ince noktadır. Any seçilirse kullanıcı ya doğru parolayı girerek ya da izinli bir IP'den bağlanarak erişir. All seçilirse her iki koşulun da sağlanması gerekir, yani hem izinli IP'den bağlanmalı hem de parola girmelidir. İç servisler için genellikle All daha güvenlidir.

    Listeyi kaydettikten sonra ilgili proxy host'un Details sekmesine dönüp Access List alanından bu listeyi seçin. Bundan sonra o alan adına yapılan her istek önce erişim kurallarından geçer. Örneğin bir izleme panelini yalnızca ofis ağınıza açmak, geri kalan dünyaya kapalı tutmak bu yöntemle mümkün olur. Güvenlik katmanlarını sunucu tarafında da güçlendirmek istiyorsanız sunucu yönetimi hizmetimiz düzenli güncelleme, güvenlik duvarı yapılandırması ve sıkılaştırma desteği sağlar.

    Sık Karşılaşılan Sorunlar ve Çözümleri#

    NPM kurulumlarında en sık karşılaşılan sorun SSL sertifikasının alınamamasıdır. Bunun nedeni neredeyse her zaman DNS veya port erişimidir. Sertifika isteği başarısız olursa önce alan adının doğru IP'ye çözümlendiğini ve 80 portunun dışarıdan erişilebilir olduğunu doğrulayın.

    # Alan adının doğru IP'ye gittiğini kontrol edin
    dig +short blog.example.com
    # 80 portunun açık olduğunu dışarıdan test edin
    curl -I http://blog.example.com
    # NPM günlüklerinde doğrulama hatalarını arayın
    docker compose logs npm | grep -i "error\|certbot"
    

    İkinci sık sorun 502 Bad Gateway hatasıdır. Bu, NPM'in arka uç uygulamaya ulaşamadığı anlamına gelir. Genellikle yanlış hedef IP veya port, ya da uygulamanın çalışmıyor olması sebebiyle oluşur. Docker konteynerlerini hedefliyorsanız NPM ve uygulamanın aynı Docker ağında olduğundan emin olun; 127.0.0.1 yerine konteyner adını kullanmanız gerekebilir. Aşağıdaki tablo yaygın hataları ve olası nedenlerini özetler.

    BelirtiOlası NedenÇözüm
    SSL alınamıyor80 portu kapalıGüvenlik duvarında 80/443 açın
    SSL alınamıyorDNS yanlışA kaydını doğru IP'ye çevirin
    502 Bad GatewayYanlış hedef portForward Port değerini kontrol edin
    502 Bad GatewayUygulama kapalıArka uç konteyneri başlatın
    Bağlantı kopuyorWebSocket kapalıWebsockets Support açın
    Panel açılmıyor81 portu engelliGüvenlik grubunu düzeltin

    Düzenli yedek almak da kurtarıcı olabilir. NPM tüm yapılandırmasını ve sertifikalarını ./data ve ./letsencrypt dizinlerinde tutar; bu iki klasörü yedeklemeniz tüm kurulumu geri getirmenize yeter. Otomatik ve dış konumda saklanan yedekler için yedekleme hizmetimizden faydalanabilir, mevcut kurulumunuzu yeni bir sunucuya taşımak isterseniz site taşıma desteğimizle sorunsuz bir geçiş yapabilirsiniz.

    Sıkça Sorulan Sorular#

    Nginx Proxy Manager ücretsiz mi#

    Nginx Proxy Manager tamamen ücretsiz ve açık kaynak bir projedir; MIT lisansıyla dağıtılır ve hiçbir gizli ücret, abonelik ya da lisans anahtarı gerektirmez. Kaynak kodu herkese açıktır, dilediğiniz gibi inceleyebilir ve kişisel veya ticari projelerinizde kullanabilirsiniz. Kullandığınız Let's Encrypt sertifikaları da ücretsiz olduğu için toplam maliyetiniz yalnızca aracı çalıştırdığınız sunucudan ibarettir.

    Nginx Proxy Manager ile normal Nginx arasındaki fark nedir#

    Temelde ikisi aynı motoru kullanır çünkü NPM zaten arka planda Nginx çalıştırır; aradaki fark yönetim şeklidir. Klasik Nginx'te yapılandırmayı .conf dosyalarını elle düzenleyerek yaparsınız ve her değişiklikten sonra servisi yeniden yüklersiniz. NPM ise bu işlemleri görsel bir arayüze taşır, SSL sertifikalarını otomatikleştirir ve hata riskini azaltır. Deneyimli yöneticiler ince ayar için hâlâ özel Nginx yapılandırması yazabilirken, çoğu senaryoda NPM'in sunduğu kolaylık fazlasıyla yeterlidir.

    Otomatik SSL sertifikaları kendiliğinden yenileniyor mu#

    Evet, NPM Let's Encrypt sertifikalarını süre dolmadan önce otomatik olarak yeniler ve bunun için sizin herhangi bir işlem yapmanıza gerek kalmaz. Let's Encrypt sertifikaları doksan gün geçerlidir; NPM arka planda düzenli bir kontrol çalıştırarak süresi yaklaşan sertifikaları yeniler. Yenilemenin sorunsuz çalışması için tek gereken, alan adının doğru IP'ye çözümlenmeye ve 80 portunun erişilebilir olmaya devam etmesidir.

    Aynı sunucuda kaç tane proxy host tanımlayabilirim#

    Pratikte proxy host sayısında sabit bir sınır yoktur; sınırı belirleyen sunucunuzun kaynakları ve arka uç uygulamalarının yüküdür. NPM yüzlerce alan adını tek bir örnekten yönetebilir çünkü her host yalnızca hafif bir yönlendirme kuralıdır. Asıl kaynak tüketimi proxy'nin kendisinde değil, arkadaki uygulamalardadır. Çok sayıda yoğun uygulama çalıştıracaksanız daha güçlü bir sunucu paketi tercih etmeniz yeterli olacaktır.

    Nginx Proxy Manager'ı üretim ortamında kullanmak güvenli mi#

    Doğru yapılandırıldığında NPM üretim ortamları için güvenli ve olgun bir çözümdür; birçok kurum ve geliştirici onu canlı sistemlerde kullanır. Güvenli bir kurulum için varsayılan giriş bilgilerini hemen değiştirmeli, yönetim portu 81'i internete kapalı tutmalı, erişim listeleriyle hassas panelleri korumalı ve Block Common Exploits seçeneğini açık bırakmalısınız. Bu önlemleri aldığınızda, önüne bir güvenlik duvarı ve gerekiyorsa WAF katmanı ekleyerek gönül rahatlığıyla yayına alabilirsiniz.

    Docker olmadan Nginx Proxy Manager kurabilir miyim#

    Resmi olarak önerilen ve en kolay yöntem Docker kurulumudur çünkü tüm bağımlılıklar tek pakette gelir. Docker kullanmadan doğrudan kaynaktan kurmak teknik olarak mümkün olsa da Node.js, veritabanı ve Nginx'i elle yapılandırmayı gerektirir ve resmi destek kapsamı dışındadır. Zaman kazanmak ve güncellemeleri kolaylaştırmak için Docker tabanlı kurulumda kalmanızı, konteynerlerinizi de bir panel üzerinden yönetmenizi öneririm.

    Kapanış#

    Nginx Proxy Manager, karmaşık Nginx yapılandırmalarını ve manuel SSL yönetimini geride bırakıp sunucunuzdaki tüm uygulamaları tek bir temiz arayüzden yönetmenizi sağlar. Docker ile dakikalar içinde kurulur, proxy host tanımları saniyeler sürer ve Let's Encrypt sertifikaları hiç uğraşmadan otomatik yenilenir. Erişim listeleriyle hassas panelleri korur, yaygın hataları hızlıca çözer ve büyüdükçe yüzlerce alan adını rahatça yönetirsiniz. Kısacası küçük projelerden orta ölçekli üretim kurulumlarına kadar geniş bir yelpazede güvenle kullanabileceğiniz bir araçtır.

    Bu kurulumu sağlam bir altyapı üzerinde çalıştırmak performans ve kararlılık açısından fark yaratır. Kendi projeleriniz için düşük gecikmeli sanal sunucu ve yüksek performanslı VDS seçeneklerimizi, uygulamalarınızı kolayca ayağa kaldırmak için App Center çözümlerimizi ve güvenlik için SSL ile sunucu yönetimi hizmetlerimizi inceleyebilirsiniz. Clou.TR ekibi olarak, ters proxy kurulumundan güvenlik sıkılaştırmaya kadar her adımda yanınızdayız; projenizi bugün güçlü bir temele taşımaya başlayabilirsiniz.

    proxyself-hosted

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.