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ı, $releasever
'ı 6 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.