Nodejs Uygulaması için Nginx'i Ters Proxy Olarak Yapılandırma


Nodejs, Chrome'un V8 JavaScript motorunu temel alan ücretsiz, açık kaynaklı, hafif, ölçeklenebilir ve etkili bir JavaScript çerçevesidir ve olaya dayalı, engellemeyen bir G/Ç modeli kullanır. Nodejs artık her yerde ve web sitelerinden, web uygulamalarından ağ uygulamalarına ve daha fazlasına kadar yazılım geliştirmek için çok popüler hale geldi.

Nginx açık kaynaklı, yüksek performanslı bir HTTP sunucusu, yük dengeleyici ve ters proxy yazılımıdır. Yapılandırmayı kolaylaştıran basit bir yapılandırma diline sahiptir. Bu yazımızda Nginx'in Nodejs uygulamaları için ters proxy olarak nasıl yapılandırılacağını göstereceğiz.

Ayrıca Okuyun: Nginx Web Sunucusunun Güvenliğini Sağlamak, Güçlendirmek ve Performansını Artırmak için Temel Kılavuz

Not: Sisteminiz zaten Nodejs ve NPM ile çalışıyorsa ve uygulamanız belirli bir bağlantı noktasında çalışıyorsa , doğrudan 4. Adım'a gidin.

Adım 1: Linux'ta Nodejs ve NPM'nin Kurulumu

Node.js ve NPM'nin en son sürümü, Nodejs web sitesi tarafından sağlanan resmi NodeSource Enterprise Linux, Fedora, Debian ve Ubuntu ikili dağıtım deposundan yüklenebilir. ve gösterildiği gibi en güncel Nodejs ve NPM paketlerini kurabilmek için sisteminize eklemeniz gerekecektir.

Debian/Ubuntu'da

---------- Install Node.js v11.x ---------- 
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs

---------- Install Node.js v10.x ----------
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

CentOS/RHEL ve Fedora'da

---------- Install Node.js v11.x ---------- 
curl -sL https://rpm.nodesource.com/setup_11.x | bash -

---------- Install Node.js v10.x ----------
curl -sL https://rpm.nodesource.com/setup_10.x | bash -

Adım 2: Nodejs Uygulaması Oluşturma

Gösterim amacıyla, gösterildiği gibi 5000 bağlantı noktasında çalışacak olan “sysmon” adlı örnek bir uygulama oluşturacağız.

sudo mkdir -p /var/www/html/sysmon
sudo vim /var/www/html/sysmon/server.js

Aşağıdaki kodu kopyalayıp server.js dosyasına yapıştırın (192.168.43.31'i sunucu IP'nizle değiştirin).

const http = require('http');

const hostname = '192.168.43.31';
const port = 5000;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('Sysmon App is Up and Running!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});

Dosyayı kaydet ve çık.

Şimdi aşağıdaki komutu kullanarak düğüm uygulamanızı başlatın (sonlandırmak için Ctrl+x tuşlarına basın).

sudo node /var/www/html/sysmon/server.js
OR
sudo node /var/www/html/sysmon/server.js &   #start it in the background to free up your terminal

Şimdi bir tarayıcı açın ve uygulamanıza http://198.168.43.31:5000 URL'sinden erişin.

Adım 3: Linux'ta Nginx Ters Proxy'yi yükleyin

Aşağıda gösterildiği gibi resmi depodan Nginx'in en son sürümünü yükleyeceğiz.

Debian/Ubuntu'da

/etc/apt/sources.list.d/nginx.list adında bir dosya oluşturun ve aşağıdaki satırları bu dosyaya ekleyin.

deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/  bionic nginx

Daha sonra depo imzalama anahtarını ekleyin, sistem paketi indeksinizi güncelleyin ve nginx paketini aşağıdaki gibi yükleyin.

wget --quiet http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key
sudo apt update
sudo apt install nginx

CentOS/RHEL ve Fedora'da

/etc/yum.repos.d/nginx.repo adında bir dosya oluşturun ve aşağıdaki yapılandırmalardan birini yapıştırın.

CentOS
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
RHEL
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1

Not: CentOS ve RHEL'in çalışma biçimleri arasındaki farklardan dolayı, $releasever6 ile değiştirmek gerekir. (6.x için) veya 7 (7.x için), işletim sistemi sürümünüze bağlı olarak.

Daha sonra depo imzalama anahtarını ekleyin ve nginx paketini gösterildiği gibi yükleyin.

wget --quiet http://nginx.org/keys/nginx_signing.key && rpm --import nginx_signing.key
yum install nginx

Nginx'i başarıyla yükledikten sonra başlatın, sistem açılışında otomatik olarak başlatılmasını etkinleştirin ve çalışır durumda olup olmadığını kontrol edin.

---------- On Debian/Ubuntu ---------- 
sudo systemctl status nginx
sudo systemctl enable nginx
sudo systemctl status nginx

---------- On CentOS/RHEL ---------- 
systemctl status nginx
systemctl enable nginx
systemctl status nginx

Bir sistem güvenlik duvarı çalıştırıyorsanız 80 (HTTP), 443 (HTTPS) ve 5000 (Node uygulaması) bağlantı noktalarını açmanız gerekir. web sunucusunun istemci bağlantı isteklerini dinlediği.

---------- On Debian/Ubuntu ---------- 
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 5000/tcp
sudo ufw reload

---------- On CentOS/RHEL ---------- 
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=5000/tcp
firewall-cmd --reload 

Adım 4: Nginx'i Nodejs Uygulaması İçin Ters Proxy Olarak Yapılandırma

Şimdi gösterildiği gibi /etc/nginx/conf.d/ altında Node uygulamanız için bir sunucu bloğu yapılandırma dosyası oluşturun.

sudo vim /etc/nginx/conf.d/sysmon.conf 

Aşağıdaki yapılandırmayı kopyalayıp yapıştırın (192.168.43.31'i sunucu IP'nizle ve tecmint.lan'ı alan adınızla değiştirin).

server {
    listen 80;
    server_name sysmon.tecmint.lan;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         http://192.168.43.31:5000;
    }
}

Değişiklikleri kaydedin ve dosyadan çıkın.

Son olarak, son değişiklikleri uygulamak için Nginx hizmetini yeniden başlatın.

sudo systemctl restart nginx
OR
systemctl restart nginx

Adım 5: Nodejs Uygulamasına Web Tarayıcı Üzerinden Erişin

Artık Node uygulamanıza, dinlediği bağlantı noktasını URL'de belirtmeden erişebilmelisiniz: bu, kullanıcıların uygulamaya erişmesi için çok kolay bir yoldur.

http://sysmon.tecmint.lan 

Test alan adınızın çalışması için /etc/hosts dosyasını kullanarak yerel DNS ayarlamanız, dosyayı açmanız ve içine aşağıdaki satırı eklemeniz gerekir (192.168.43.31 'i değiştirmeyi unutmayın). 'i sunucu IP'nizle ve tecmint.lan'ı daha önce olduğu gibi alan adınızla) kullanın.

192.168.43.31 sysmon.tecmint.lan

Bu kadar! Bu yazımızda Nginx'in Nodejs uygulamaları için ters proxy olarak nasıl yapılandırılacağını gösterdik. Bu makaleyle ilgili sorularınızı sormak veya düşüncelerinizi paylaşmak için aşağıdaki geri bildirim formunu kullanın.