Nginx Proxy Manager Nedir?
Nginx Proxy Manager, Nginx reverse proxy işlemlerini kolay bir web arayüzü üzerinden yönetmemizi sağlayan kullanışlı bir araçtır. Alan adlarını container'lara yönlendirmek, SSL sertifikası almak ve HTTPS yönlendirmesi yapmak için tercih edilir.
Bu doküman, kemaltokmak.com sitesini Docker container üzerinden yayınlarken kullandığımız gerçek Nginx Proxy Manager yapısına göre hazırlanmıştır.
Neden Nginx Proxy Manager Kullandık?
VPS üzerinde ileride birden fazla web sitesi yayınlamak istediğimiz için her siteyi ayrı ayrı container olarak çalıştırıp gelen trafiği doğru container'a yönlendirmemiz gerekir.
- Tek VPS üzerinde birden fazla site yayınlayabiliriz.
- Alan adlarını ayrı container'lara yönlendirebiliriz.
- Let's Encrypt SSL sertifikasını kolayca alabiliriz.
- HTTP trafiğini HTTPS'e yönlendirebiliriz.
- Web arayüzü sayesinde yönetim kolaylaşır.
Nginx Proxy Manager Klasörünü Hazırlama
Önce Docker projelerimizin bulunduğu dizine geçiyoruz ve Nginx Proxy Manager için ayrı bir klasör oluşturuyoruz.
cd /opt/docker
mkdir -p nginx-proxy-manager
cd nginx-proxy-manager
Bu klasör içinde compose dosyamız, data klasörü ve SSL dosyaları yer alacaktır.
Docker Network Oluşturma
Nginx Proxy Manager'ın diğer web container'ları ile konuşabilmesi için ortak bir Docker network kullanıyoruz.
docker network create web
Network zaten varsa Docker hata verebilir. Bu durumda mevcut network kullanılabilir.
docker network ls
compose.yaml Dosyasını Hazırlama
Nginx Proxy Manager container'ını Docker Compose ile tanımlıyoruz.
nano compose.yaml
Dosyanın içine şu yapı eklenir:
services:
nginx-proxy-manager:
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- "80:80"
- "81:81"
- "443:443"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
- web
networks:
web:
external: true
80 ve 443 portları internet trafiği için, 81 portu ise Nginx Proxy Manager yönetim paneli için kullanılır.
Container'ı Başlatma
Compose dosyasını hazırladıktan sonra servisi arka planda başlatıyoruz.
docker compose up -d
Bu komut gerekli imajı indirir ve Nginx Proxy Manager container'ını çalıştırır.
Container Durumunu Kontrol Etme
Container'ın çalışıp çalışmadığını kontrol ediyoruz.
docker ps
Listede nginx-proxy-manager container'ı görünüyorsa kurulum başarılıdır.
Web Arayüzüne Giriş
Nginx Proxy Manager yönetim paneli 81 portu üzerinden açılır. Tarayıcıdan şu adrese gidilir:
http://SUNUCU_IP_ADRESI:81
Eğer sayfa açılmıyorsa UFW güvenlik duvarı, port yönlendirmesi ve container durumu kontrol edilmelidir.
İlk Admin Hesabını Düzenleme
İlk girişten sonra varsayılan kullanıcı bilgileri değiştirilir. Güvenlik için güçlü bir parola kullanılmalıdır.
Yönetim paneli internete açık olduğu için varsayılan bilgileri değiştirmeden sistemi kullanmak güvenli değildir.
Proxy Host Oluşturma
Web sitemizi alan adı üzerinden yayınlamak için Nginx Proxy Manager panelinde yeni bir Proxy Host oluştururuz.
Menüden şu yol izlenir:
Hosts → Proxy Hosts → Add Proxy Host
Domain Names alanına kullanılacak alan adı yazılır:
kemaltokmak.com
www.kemaltokmak.com
Forward Host Ayarları
Proxy Host oluştururken gelen trafiğin hangi container'a yönlendirileceğini belirtmemiz gerekir.
Bizim web sitesi container adımız:
kemaltokmak
Forward ayarları şu şekilde yapılabilir:
Scheme: http
Forward Hostname / IP: kemaltokmak
Forward Port: 80
Nginx Proxy Manager ile web sitesi container'ı aynı Docker network içinde olduğu için IP adresi yerine container adını kullanabiliriz.
Let's Encrypt SSL Sertifikası Alma
Proxy Host ayarları yapıldıktan sonra SSL sekmesine geçilir. Buradan Let's Encrypt sertifikası talep edilir.
- SSL Certificate: Request a new SSL Certificate
- Force SSL: Aktif
- HTTP/2 Support: Aktif
- Email adresi girilir.
- Let's Encrypt şartları kabul edilir.
HTTP'den HTTPS'e Yönlendirme
SSL sertifikası alındıktan sonra Force SSL seçeneği sayesinde HTTP istekleri otomatik olarak HTTPS'e yönlendirilir.
Test için şu komut kullanılabilir:
curl -I http://kemaltokmak.com
Çıktıda 301 yönlendirme görülüyorsa HTTP'den HTTPS'e yönlendirme çalışıyor demektir.
Sorun Giderme
Nginx Proxy Manager kurulumunda en sık karşılaşılan sorunlar port çakışması, DNS yönlendirme hatası, container'ın aynı network içinde olmaması ve SSL doğrulama problemleridir.
Container Loglarını Kontrol Etme
docker logs nginx-proxy-manager
Web Container Network Kontrolü
docker network inspect web
NPM Container İçinden Web Container'ı Test Etme
docker exec -it nginx-proxy-manager sh
getent hosts kemaltokmak
SSL sertifikası alabilmek için alan adının doğru şekilde VPS IP adresine yönlenmiş olması ve 80/443 portlarının açık olması gerekir.
Bu Dokümanda Ne Öğrendik?
Bu dokümanda Docker üzerinde Nginx Proxy Manager kurduk, yönetim paneline giriş yaptık, web sitesi container'ımıza Proxy Host üzerinden yönlendirme yaptık ve Let's Encrypt SSL sertifikası ile sitemizi HTTPS üzerinden yayınladık.
- Nginx Proxy Manager'ın ne işe yaradığını öğrendik.
- Docker network yapısını hazırladık.
- compose.yaml ile NPM container'ını kurduk.
- 81 portundan yönetim paneline giriş yaptık.
- Proxy Host oluşturduk.
- Container adına yönlendirme yaptık.
- Let's Encrypt SSL sertifikası aldık.
- HTTP trafiğini HTTPS'e yönlendirdik.
- Log ve network kontrollerini öğrendik.