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.
İç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ı
# 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:
# 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:
- Proxy Hosts → Add Proxy Host
- Domain Names:
app.example.com - Scheme:
http - Forward Hostname / IP:
192.168.1.10(veya container adı) - Forward Port:
3000 - Block Common Exploits: Etkinleştir
- Websockets Support: WebSocket kullanan uygulamalar için etkinleştir
SSL Sertifikası Ekleme
Proxy host oluştururken SSL sekmesinde:
- SSL Certificate: Request a new SSL Certificate
- Force SSL: Etkinleştir (HTTP → HTTPS yönlendirme)
- HTTP/2 Support: Etkinleştir
- HSTS Enabled: Etkinleştir
- Email Address: SSL bildirimleri için email
- I Agree: Let's Encrypt koşullarını kabul et
- 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:
# 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ü
- Access Lists → Add Access List
- Name:
Admin Only - Satisfy Any: Herhangi bir koşul yeterli
- 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 List → Admin Only seçin.
Redirection Host
URL yönlendirmeleri oluşturmak için:
- Redirection Hosts → Add Redirection Host
- Domain Names:
eski.example.com - Scheme:
https - Forward Domain:
yeni.example.com - HTTP Code:
301(Kalıcı yönlendirme) - Preserve Path: URL yolunu koru
- SSL sekmesinde sertifika ekleyin
Stream Host (TCP/UDP Proxy)
TCP veya UDP portlarını yönlendirmek için:
- Streams → Add Stream
- Incoming Port:
25565(örn: Minecraft) - Forward Host:
192.168.1.50 - Forward Port:
25565 - TCP Forwarding: Etkinleştir
- 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:
# Ö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:
- Proxy Host → Edit → Custom Locations
- Location:
/api - Scheme:
http - Forward Hostname:
api-server - Forward Port:
8080
Wildcard SSL Sertifikası
DNS Challenge ile wildcard sertifika almak için:
- SSL Certificates → Add SSL Certificate
- Let's Encrypt sekmesi
- Domain Names:
*.example.com - Use a DNS Challenge: Etkinleştir
- DNS Provider: Cloudflare, DigitalOcean, vb.
- Credentials: API token girin
Cloudflare örneği:
dns_cloudflare_api_token = YOUR_API_TOKEN
Yedekleme ve Geri Yükleme
# 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
# 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
# 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.
İlgili Makaleler
Sunucu İzleme Araçları: Grafana, Prometheus ve Netdata
Prometheus + Grafana stack kurulumu, Netdata, node_exporter, alert kuralları, dashboard oluşturma ve sunucu metrik izleme.
Proxy Sunucu Kurulumu: Squid ve HAProxy Rehberi
Squid forward proxy, HAProxy load balancer, SSL termination, ACL kuralları, caching, health check ve yüksek erişilebilirlik.
CrowdSec Kurulumu: Topluluk Destekli Güvenlik Motoru
CrowdSec kurulumu, bouncer yapılandırması, saldırı algılama, IP engelleme, dashboard, koleksiyon ve senaryo yönetimi.