Nginx Proxy Forward ve SSL Sertifika Kurulumu

  • Fatih Çevik
  • 04 Mar 2022


Halihazırda çalışan bir web siteniz var fakat ortamınızı taşımak istiyorsunuz, local network 'unuzu kurdunuz, NetGateway (Birazdan üzerinden geçeceğiz.) kurulumunu gerçekleştirdiniz ve sanal makinelerinizi local ağınızda kurdunuz, son olarak web server'ınızı konfigüre edip sitenizi ayağa kaldırdınız fakat o da ne ? Web sitenize ulaşmayı deniyorsunuz ama başarılı olamıyorsunuz. Neden olduğunu düşünürken aklınıza web sitenizin local network üzerinde çalıştığı geliyor. Peki bu sorunu nasıl çözebiliriz ? Evet doğru düşünüyorsunuz cevap kesinlikle Nginx :)

NetGateway Nedir ?

NetGateway %100 Plusclouds tarafından geliştirilen Linux tabanlı Router ve Load Balancer gibi bir çok işlevi yerine getirebilen bir servistir.


Nginx Nedir ?

Nginx; yüksek eş zamanlı çalışma kabiliyeti, yüksek performans ve düşük hafıza kullanımına odaklanılarak tasarlanmış bir web sunucusudur. Aynı zamanda reverse proxy , load balancer ve HTTP ön belleği olarak da kullanılabilir.

Biz bu yazımızda Nginx servisini proxy yönlendirme için kullanacağız. Bu sayede web sitenize yalnızca localden değil tüm public bağlantılardan da ulaşım sağlanmış olacaktır.

1. İlk Olarak Router Görevi Gören NetGateway Sanal Makinenize Giriş Yapın ve Nginx Kurulumunu Gerçekleştirin

Nginx default olarak apt repolarında bulunmaktadır. Aşağıdaki komut ile nginx kurulumunu gerçekleştirin.

apt -y install nginx

2. SSL Sertifikası İçin CSR Dosyası Oluşturup Hosting Tarafında İmzalayın

OpenSSL ile CSR dosyası oluşturmak için terminalde gerekli yetkilerle aşağıdaki komutu çalıştırın.

openssl req -new -newkey rsa:2048 -nodes -keyout example.com -out example.com.csr

example.com alan adlarını kendi alan adlarınızla değiştirmeyi unutmayın!

Şirket ve domain bilgilerinizi girdikten sonra bulunduğunuz dizinde example.com.csr ve example.com.key adında iki dosya oluştuğunu göreceksiniz.

3. CSR Dosyanızı İmzalayın

Elinizde bulunan yeni oluşturduğunuz CSR dosyanızı hosting tarafında imzalayın, ardından karşılığında elde ettiğiniz .pem dosyasını NetGateway makinenize aktarın.

4. Nginx Konfigürasyonunu Düzenleyin

İlk olarak aşağıdaki dizine erişin

cd /etc/nginx

Ardından ls komutu ile alt dizinleri ve dosyaları görüntüleyin. Sites-available ve sites-enabled adında iki dizin göreceksiniz. Web sitemizi burada barındırmadığımız için sites-enabled içinde proxy ve SSL konfigürasyonlarımızı tanımlamamız yeterli olacaktır. Aşağıdaki komutlar ile dizine girin ve konfigürasyon dosyasını oluşturun

cd sites-enablednano example.com.conf

Konfigürasyon dosyasını oluşturduktan sonra aşağıdaki içeriği kopyalayın ve yapıştırın. Example.com alan adını ve web server IP adresini kendi bilgilerinizle değiştirmeyi unutmayın .

server {

listen 80;

server_name example.com;

return 301 https:// ​request_uri;

}

server {

listen 443;

server_name example.com;

ssl_certificate /root/ssl/example.com.pem;

ssl_certificate_key /root/ssl/example.com.key;

ssl on;

ssl_session_cache builtin:1000 shared:SSL:10m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;

ssl_prefer_server_ciphers on;

access_log /var/log/nginx/example.com.access.log;

location / {

proxy_set_header Host $host; 

 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;

proxy_pass http://10.0.10.27:80 ; proxy_read_timeout 90;

proxy_redirect http://10.0.10.27:80 https://example.com ;

}

}

Konfigürasyonun başındaki kısımda Nginx servisine 80 portunda example.com alan adına gelen istekleri dinlemesini belirtiyoruz.

Ardından ikinci kısımda 443 yani HTTPS portunu dinlemesi için konfigüre ediyoruz.

Konfigürasyonun en alt kısmında ise proxy_pass ile localde bulunan web sitemizin de barındığı sunucu IP adresini belirtiyoruz.

proxy_redirect parametresi ile de 80 portu üzerinden yani HTTP ile gelen istekleri daha güvenli bir protokol olan SSL sertifikası ile çalışan HTTPS protokolüne yönlendiriyoruz.

4. Nginx Servisini Yeniden Yükleyin

Evet her şeyi doğru yaptıysanız artık geriye kalan tek şey nginx servisinizi yeniden başlatmak ve web sitenize erişip keyfini çıkartmak :)

Aşağıdaki komut ile konfigürasyonlarınızda hata olup olmadığını kontrol edebilirsiniz.

nginx -t

Ardından sıradaki komut ile nginx servisini yeniden yüklüyoruz konfigürasyon değişikliklerimizin aktif olması için.

/etc/init.d/nginx reload

Nginx servisi başarıyla yeniden yüklendiyse artık web siteniz SSL sertifikası ile birlikte erişime hazır anlamına gelmektedir.

Size yardımcı olmamı
ister misiniz ?