Sales3 min read530 words

Nginx Proxy Forward ve SSL Sertifika Kurulumu

Fatih Çevik

Fatih Çevik

PlusClouds Author

Cloud & SaaS


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.

Frequently Asked Questions

NetGateway üzerinde sanal makineye Nginx kurulumunu nasıl yaparım?

Nginx kurulumu için apt ile yapılır ve komut şu şekildedir: apt -y install nginx. Kurulum sonrası proxy yönlendirme için /etc/nginx/sites-enabled dizininde bir konfigürasyon dosyası oluşturup kendi alan adınızı ve hedef IP adresinizi girerek yapılandırmalısınız.

CSR oluşturarak imzalanmasını nasıl gerçekleştiririm ve bundan sonra ne elde ederim?

OpenSSL ile CSR ve özel anahtar oluşturmak için openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr komutunu çalıştırın. CSR hosting tarafında imzalandığında elde edeceğiniz .pem dosyasını NetGateway makinesine aktarın.

Nginx konfigürasyonu nasıl olmalı ve hangi bölümler bulunmalı?

Sites-enabled içinde example.com.conf olarak bir konfigürasyon dosyası oluşturun; HTTP trafiğini HTTPS a yönlendirmek için 80 portunda bir server bloğu ve HTTPS için 443 portunda bir blok bulunmalı. İçerikte proxy_pass ile iç sunucuya yönlendirme, proxy_set_header ayarları ve proxy_redirect ile güvenli yönlendirme yer alır; alan adını ve iç sunucu IP adresini kendi bilgilerinizle değiştirin.

Konfigürasyonu nasıl test ederim ve servisi nasıl yeniden yüklerim?

Öncelikle konfigürasyonun hatasız olup olmadığını nginx -t komutu ile kontrol edin. Ardından konfigürasyon değişikliklerini aktif etmek için /etc/init.d/nginx reload komutunu kullanın.

SSL sertifikası için hangi dosya yollarını kullanmam ve hangi protokolleri etkinleştirmem gerekir?

Sertifikalar için ssl_certificate ile sertifika dosyasının yolunu ve ssl_certificate_key ile anahtar dosyasının yolunu belirtin; örnekte ssl_certificate /root/ssl/example.com.pem ve ssl_certificate_key /root/ssl/example.com.key kullanılır. Ayrıca ssl_on, ssl_protocols TLSv1 TLSv1.1 TLSv1.2 ve güvenli şifreleme ayarlarını (ssl_ciphers) konfigöre dahil edin.

Proxy yönlendirme ile hangi faydaları elde ederim ve hangi trafiği korurum?

Proxy yönlendirme sayesinde web sitenize yalnızca localden değil tüm public bağlantılardan da ulaşım sağlanır ve proxy_pass ile iç ağa yönlendirme yapılır. Ayrıca proxy_redirect ile HTTP isteklerini HTTPS üzerinden güvenli şekilde sunarsınız ve gerekli header ayarları ile istek bilgileri korunur.

NetGateway nedir ve bu senaryoda Nginx ne amaçla kullanılıyor?

NetGateway %100 Plusclouds tarafından geliştirilen Linux tabanlı bir Router ve Load Balancer gibi birçok işlevi yerine getirebilen bir servistir. Bu yazıda Nginx ise proxy yönlendirme için kullanılarak yerel sunucunun iç ağ üzerinden public erişimini mümkün kılar.