Ana içeriğe geç
Kategoriye Dön

Nginx Proxy Manager Kurulumu: Web Arayüzlü Reverse Proxy

Nginx Proxy Manager Docker kurulumu, SSL sertifikası otomatik yenileme, proxy host ekleme, access list, redirect, stream ve custom location.

Okuma süresi: 12 dk Monitoring
nginx proxy managerreverse proxyssldockerweb arayüzület's encrypt

İçindekiler

Nginx Proxy Manager Kurulumu: Web Arayüzlü Reverse Proxy

Nginx Proxy Manager (NPM), Nginx reverse proxy'yi kullanıcı dostu bir web arayüzü üzerinden yönetmenizi sağlayan açık kaynaklı bir araçtır. SSL sertifikası yönetimi, proxy host yapılandırması ve erişim kontrolü gibi işlemleri komut satırına ihtiyaç duymadan gerçekleştirebilirsiniz.

Nginx Proxy Manager Nedir?

Nginx Proxy Manager'ın öne çıkan özellikleri:

  • Web Arayüzü: Kolay kullanımlı yönetim paneli
  • SSL Otomatik Yenileme: Let's Encrypt entegrasyonu ile ücretsiz SSL
  • Proxy Hosts: Reverse proxy yapılandırması
  • Redirection Hosts: URL yönlendirme
  • Stream Hosts: TCP/UDP port yönlendirme
  • Access Lists: IP ve kullanıcı bazlı erişim kontrolü
  • Custom Locations: Özel Nginx location blokları
  • 404 Hosts: Özel 404 sayfaları

Docker ile Kurulum

Docker Compose Yapılandırması

hljs yaml
# docker-compose.yml
version: '3.8'
services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - '80:80'      # HTTP
      - '443:443'    # HTTPS
      - '81:81'      # Admin Panel
    volumes:
      - npm_data:/data
      - npm_letsencrypt:/etc/letsencrypt
    environment:
      - TZ=Europe/Istanbul

volumes:
  npm_data:
  npm_letsencrypt:
hljs bash
# Kurulumu başlat
docker compose up -d

# Container durumunu kontrol et
docker ps | grep nginx-proxy-manager

İlk Giriş

Kurulum tamamlandıktan sonra admin paneline erişin:

http://SUNUCU_IP:81

Varsayılan giriş bilgileri:
Email:    admin@example.com
Password: changeme

İlk girişte şifrenizi ve email adresinizi değiştirmeniz istenecektir.

Proxy Host Ekleme

Temel Proxy Host

Bir web uygulamasını reverse proxy arkasına almak için:

  1. Proxy HostsAdd Proxy Host
  2. Domain Names: app.example.com
  3. Scheme: http
  4. Forward Hostname / IP: 192.168.1.10 (veya container adı)
  5. Forward Port: 3000
  6. Block Common Exploits: Etkinleştir
  7. Websockets Support: WebSocket kullanan uygulamalar için etkinleştir

SSL Sertifikası Ekleme

Proxy host oluştururken SSL sekmesinde:

  1. SSL Certificate: Request a new SSL Certificate
  2. Force SSL: Etkinleştir (HTTP → HTTPS yönlendirme)
  3. HTTP/2 Support: Etkinleştir
  4. HSTS Enabled: Etkinleştir
  5. Email Address: SSL bildirimleri için email
  6. I Agree: Let's Encrypt koşullarını kabul et
  7. Save

SSL sertifikası otomatik olarak alınacak ve yenilenecektir.

Docker Network ile Proxy

Docker container'larını proxy'lemek için aynı network'ü kullanın:

hljs yaml
# docker-compose.yml
version: '3.8'
services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - npm_data:/data
      - npm_letsencrypt:/etc/letsencrypt
    networks:
      - proxy_network

  webapp:
    image: your-webapp:latest
    container_name: webapp
    restart: unless-stopped
    expose:
      - "3000"
    networks:
      - proxy_network

  api:
    image: your-api:latest
    container_name: api
    restart: unless-stopped
    expose:
      - "8080"
    networks:
      - proxy_network

networks:
  proxy_network:
    driver: bridge

volumes:
  npm_data:
  npm_letsencrypt:

Proxy host'ta Forward Hostname olarak container adını kullanın:

  • webapp → webapp:3000
  • api → api:8080

Access List (Erişim Listesi)

Belirli IP'lere veya kullanıcılara erişim kısıtlaması:

IP Bazlı Erişim Kontrolü

  1. Access ListsAdd Access List
  2. Name: Admin Only
  3. Satisfy Any: Herhangi bir koşul yeterli
  4. Pass Auth to Host: Kimlik doğrulamayı backend'e ilet

Access sekmesinde:

Allow: 192.168.1.0/24
Allow: 10.0.0.0/8
Deny: all

HTTP Basic Authentication

Authorization sekmesinde:

Username: admin
Password: GucluSifre123!

Oluşturulan access list'i proxy host'a atayın: Proxy Host → Edit → Access ListAdmin Only seçin.

Redirection Host

URL yönlendirmeleri oluşturmak için:

  1. Redirection HostsAdd Redirection Host
  2. Domain Names: eski.example.com
  3. Scheme: https
  4. Forward Domain: yeni.example.com
  5. HTTP Code: 301 (Kalıcı yönlendirme)
  6. Preserve Path: URL yolunu koru
  7. SSL sekmesinde sertifika ekleyin

Stream Host (TCP/UDP Proxy)

TCP veya UDP portlarını yönlendirmek için:

  1. StreamsAdd Stream
  2. Incoming Port: 25565 (örn: Minecraft)
  3. Forward Host: 192.168.1.50
  4. Forward Port: 25565
  5. TCP Forwarding: Etkinleştir
  6. UDP Forwarding: Gerekirse etkinleştir

Örnek kullanım senaryoları:

  • Minecraft sunucusu: TCP 25565
  • FiveM sunucusu: TCP/UDP 30120
  • Veritabanı: TCP 3306 (MySQL), TCP 5432 (PostgreSQL)
  • SSH: TCP 22

Custom Nginx Configuration

Proxy host'a özel Nginx yapılandırması eklemek için:

Advanced Tab

Proxy host düzenlerken Advanced sekmesinde:

hljs nginx
# Özel header'lar
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;

# Büyük dosya yükleme
client_max_body_size 100M;

# Timeout ayarları
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;

# WebSocket desteği
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Custom Location

Proxy host içinde farklı path'leri farklı backend'lere yönlendirmek için:

  1. Proxy Host → Edit → Custom Locations
  2. Location: /api
  3. Scheme: http
  4. Forward Hostname: api-server
  5. Forward Port: 8080

Wildcard SSL Sertifikası

DNS Challenge ile wildcard sertifika almak için:

  1. SSL CertificatesAdd SSL Certificate
  2. Let's Encrypt sekmesi
  3. Domain Names: *.example.com
  4. Use a DNS Challenge: Etkinleştir
  5. DNS Provider: Cloudflare, DigitalOcean, vb.
  6. Credentials: API token girin

Cloudflare örneği:

dns_cloudflare_api_token = YOUR_API_TOKEN

Yedekleme ve Geri Yükleme

hljs bash
# NPM verilerini yedekle
docker exec nginx-proxy-manager tar -czf /tmp/npm-backup.tar.gz /data /etc/letsencrypt
docker cp nginx-proxy-manager:/tmp/npm-backup.tar.gz ./npm-backup-$(date +%Y%m%d).tar.gz

# Geri yükleme
docker cp ./npm-backup.tar.gz nginx-proxy-manager:/tmp/
docker exec nginx-proxy-manager tar -xzf /tmp/npm-backup.tar.gz -C /
docker restart nginx-proxy-manager

Güncelleme

hljs bash
# En son sürüme güncelle
docker compose pull
docker compose up -d

# Eski image'ları temizle
docker image prune -f

Güvenlik Önerileri

hljs bash
# Admin panelini sadece belirli IP'lerden erişilebilir yap
# docker-compose.yml'de port 81'i sadece localhost'a bağla
ports:
  - '80:80'
  - '443:443'
  - '127.0.0.1:81:81'  # Sadece localhost

# SSH tunnel ile erişim
ssh -L 81:localhost:81 user@sunucu-ip
# Tarayıcıda: http://localhost:81

REXE sunucularınızda Nginx Proxy Manager ile tüm web uygulamalarınızı tek bir noktadan yönetebilir, SSL sertifikalarını otomatik olarak alabilir ve yenileyebilirsiniz. Web arayüzü sayesinde Nginx yapılandırmasıyla uğraşmadan profesyonel reverse proxy kurulumu yapabilirsiniz.