Nginx SSL ile Tomcat Sunucusuna Erişim sağlama (Reverse Proxy)
Nginx SSL Reverse Proxy ile Tomcat Yönlendirme (Adım Adım Rehber)
Bu yazıda Nginx SSL reverse proxy kullanarak gelen HTTPS isteklerinin Tomcat sunucusuna yönlendirilmesi işlemini adım adım inceleyeceğiz.
Günümüzde güvenlik gereksinimleri nedeniyle web uygulamalarına erişimlerin HTTPS (SSL) üzerinden yapılması zorunlu hale gelmiştir.
Bu nedenle dış dünyaya açık olan Nginx sunucusu üzerinde SSL yapılandırması yaparak, gelen istekleri iç ağda çalışan SSL’siz Tomcat sunucusuna yönlendirmek en doğru mimaridir.
Mimari Yapı
Amaç: HTTPS isteklerini Nginx üzerinden alıp Tomcat’e iletmek.
- Kullanıcı → HTTPS → Nginx
- Nginx → HTTP → Tomcat
Böylece hem güvenlik sağlanır hem de port bilgisi gizlenmiş olur.
Hedef URL
Swagger arayüzüne şu şekilde erişeceğiz:
https://domain.com/api/swagger-ui.html
Direkt Tomcat portu ile erişim (:8080) güvenlik açığı oluşturur ve önerilmez.
Adım 1: Nginx Konfigürasyonu
Nginx konfigürasyon dosyasını açın:
cd /etc/nginx/sites-enabled
nano default
Tomcat için upstream ve proxy ayarlarını ekleyin:
upstream tomcat {
server 127.0.0.1:8888 fail_timeout=0;
}
server {
listen 80;
listen 443 ssl;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
server_name domain.com;
location /api/ {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tomcat/;
}
}
Nginx’i yeniden başlatın:
nginx -t
systemctl restart nginx
Adım 2: Tomcat Konfigürasyonu
Tomcat server.xml dosyasını açın:
cd /home/tomcat/conf
nano server.xml
Connector ayarını aşağıdaki gibi düzenleyin:
<Connector port="8888"
protocol="HTTP/1.1"
address="127.0.0.1"
connectionTimeout="20000"
proxyName="domain.com"
proxyPort="443" />
Tomcat’i yeniden başlatın:
./shutdown.sh
./startup.sh
Adım 3: Test ve Doğrulama
Aşağıdaki URL üzerinden erişimi test edin:
https://domain.com/api/swagger-ui.html
Eğer yapılandırma doğruysa Swagger arayüzü sorunsuz şekilde açılacaktır.
Önemli Notlar
- Tomcat dış dünyaya kapalı olmalıdır (localhost üzerinden çalışmalı)
- SSL sadece Nginx üzerinde aktif olmalıdır
- proxyName ve proxyPort doğru ayarlanmalıdır
- Firewall ayarları kontrol edilmelidir
Sık Sorulan Sorular (FAQ)
Neden Nginx reverse proxy kullanılır?
Güvenlik, performans ve merkezi SSL yönetimi için kullanılır.
Tomcat üzerinde SSL kurmak yerine neden Nginx kullanılır?
Nginx daha performanslıdır ve SSL yönetimini kolaylaştırır.
HTTP → HTTPS yönlendirme gerekli mi?
Evet, tüm trafik HTTPS’e yönlendirilmelidir.