Sales

Nginx Proxy Forward ve SSL Sertifikası Kurulumu

Fatih Çevik

Fatih Çevik

PlusClouds Yazarı


Zateniz zaten çalışan bir web sitesine sahip, ancak ortamınızı taşımak istiyorsunuz, yerel ağ kurdunuz, NetGateway (Aşağıda bahsedeceğiz.) yüklediniz ve sanal makinelerinizi yerel ağınıza kurdunuz, son olarak web sunucunuzu yapılandırdınız ve sitenizi başlattınız, ama bu da ne? Web sitenize erişmeye çalışıyorsunuz, ancak başaramıyorsunuz. Sebebi düşünürken, web sitenizin yerel ağ üzerinde çalıştığını fark ediyorsunuz. Bu sorunu nasıl çözebiliriz? Evet, doğru düşünüyorsunuz, cevap kesinlikle Nginx :)

NetGateway nedir?

NetGateway Plusclouds tarafından %100 geliştirilen ve Linux tabanlı bir router ve load balancer gibi birçok işlevi yerine getirebilen bir hizmettir.


Nginx nedir?

Nginx, yüksek eşzamanlı işleme kapasitesi, yüksek performans ve düşük bellek kullanımı odaklı tasarlanmış bir web sunucusudur. Ayrıca reverse proxy , load balancer ve HTTP-cache olarak da işlev görebilir.

Bu makalede, web sitenizin sadece yerel olarak değil, aynı zamanda tüm genel bağlantılar üzerinden erişilebilir olmasını sağlamak için proxy yönlendirme amacıyla Nginx hizmetini kullanacağız.

1. İlk olarak, router olarak işlev gören NetGateway sanal makinenize giriş yapın ve Nginx kurulumunu gerçekleştirin

Nginx, apt-repositories'de varsayılan olarak mevcuttur. Nginx'i kurmak için aşağıdaki komutu çalıştırın.

apt -y install nginx

2. SSL sertifikası için bir CSR dosyası oluşturun ve hosting tarafından imzalatın

OpenSSL ile bir CSR dosyası oluşturmak için terminalde uygun 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 kendi alan adlarınızla değiştirmeyi unutmayın!

Şirket ve alan adı bilgilerinizi girdikten sonra, mevcut dizininizde example.com.csr ve example.com.key adında iki dosyanın oluşturulduğunu göreceksiniz.

3. CSR dosyanızı imzalatın

Oluşturduğunuz CSR dosyasını hosting tarafından imzalatın ve ardından aldığınız .pem dosyasını NetGateway makinenize kopyalayın.

4. Nginx yapılandırmasını ayarlayın

Öncelikle aşağıdaki dizine erişin

cd /etc/nginx

Ardından ls komutunu kullanarak 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, proxy ve SSL yapılandırmalarımızı sites-enabled içinde tanımlamamız yeterlidir. Dizin içine girin ve aşağıdaki komutlarla yapılandırma dosyasını oluşturun

cd sites-enablednano example.com.conf

Yapılandırma dosyasını oluşturduktan sonra, aşağıdaki içeriği kopyalayıp yapıştırın. Example.com alan adını ve web sunucusu 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 ;

}

}

Yapılandırmanın üst kısmında, Nginx hizmetinin example.com alan adı için 80 numaralı portu dinlemesi gerektiğini belirtiyoruz.

Ardından, ikinci kısmı HTTPS yani 443 numaralı portu dinleyecek şekilde yapılandırıyoruz.

Yapılandırmanın alt kısmında, web sitemizin yerel olarak barındırıldığı sunucunun IP adresini proxy_pass ile belirtiyoruz.

proxy_redirect parametresi ile 80 numaralı port üzerinden yani HTTP protokolü ile gelen istekleri, güvenli olan ve SSL sertifikası ile çalışan HTTPS protokolüne yönlendiriyoruz.

4. Nginx hizmetini yeniden başlatın

Evet, her şeyi doğru yaptıysanız, geriye kalan tek şey Nginx hizmetinizi yeniden başlatmak ve web sitenize erişmenin keyfini çıkarmak :)

Aşağıdaki komut ile yapılandırmalarınızda hata olup olmadığını kontrol edebilirsiniz.

nginx -t

Ardından yapılandırma değişikliklerinin etkin olması için Nginx hizmetini yeniden yüklemek üzere aşağıdaki komutu çalıştırın.

/etc/init.d/nginx reload

Nginx hizmeti başarıyla yeniden yüklendiyse, bu web sitenizin SSL sertifikası ile erişime hazır olduğu anlamına gelir.