Cara Mengonfigurasi Nginx sebagai Reverse Proxy untuk Aplikasi Nodejs


Nodejs adalah kerangka kerja JavaScript sumber terbuka gratis, ringan, skalabel, dan efisien yang dibangun di mesin JavaScript V8 Chrome, dan menggunakan model I/O non-pemblokiran yang digerakkan oleh peristiwa. Nodejs kini ada di mana-mana, dan menjadi sangat populer untuk mengembangkan perangkat lunak mulai dari situs web, aplikasi web hingga aplikasi jaringan, dan banyak lagi.

Nginx adalah server HTTP sumber terbuka dan berkinerja tinggi, penyeimbang beban, dan perangkat lunak proksi terbalik. Ini memiliki bahasa konfigurasi yang sederhana sehingga mudah untuk dikonfigurasi. Pada artikel ini, kami akan menunjukkan cara mengkonfigurasi Nginx sebagai reverse proxy untuk aplikasi Nodejs.

Baca Juga: Panduan Utama untuk Mengamankan, Memperkuat, dan Meningkatkan Kinerja Server Web Nginx

Catatan: Jika sistem Anda sudah berjalan dengan Nodejs dan NPM, dan aplikasi Anda berjalan pada port tertentu , langsung ke Langkah 4.

Langkah 1: Menginstal Nodejs dan NPM di Linux

Versi terbaru Node.js dan NPM tersedia untuk diinstal dari repositori resmi distribusi biner NodeSource Enterprise Linux, Fedora, Debian, dan Ubuntu, yang dikelola oleh situs web Nodejs dan Anda perlu menambahkannya ke sistem Anda agar dapat menginstal paket Nodejs dan NPM terbaru seperti yang ditunjukkan.

Di Debian/Ubuntu

---------- 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

Di CentOS/RHEL dan Fedora

---------- 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 -

Langkah 2: Membuat Aplikasi Nodejs

Untuk tujuan demonstrasi, kita akan membuat contoh aplikasi bernama “sysmon”, yang akan berjalan pada port 5000 seperti yang ditunjukkan.

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

Copy dan paste kode berikut pada file server.js (ganti 192.168.43.31 dengan IP server Anda).

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}/`);
});

Simpan file dan keluar.

Sekarang mulai aplikasi simpul Anda menggunakan perintah berikut (tekan Ctrl+x untuk menghentikannya).

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

Sekarang buka browser dan akses aplikasi Anda di URL http://198.168.43.31:5000.

Langkah 3: Instal Nginx Reverse Proxy di Linux

Kami akan menginstal Nginx versi terbaru dari repositori resmi, seperti yang ditunjukkan di bawah ini.

Di Debian/Ubuntu

Buat file bernama /etc/apt/sources.list.d/nginx.list dan tambahkan baris berikut ke dalamnya.

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

Selanjutnya, tambahkan kunci penandatanganan repositori, perbarui indeks paket sistem Anda dan instal paket nginx sebagai berikut.

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

Di CentOS/RHEL dan Fedora

Buat file bernama /etc/yum.repos.d/nginx.repo dan tempel salah satu konfigurasi di bawah.

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

Catatan: Karena perbedaan antara cara CentOS dan RHEL, $releasever perlu diganti dengan 6 (untuk 6.x) atau 7 (untuk 7.x), bergantung pada versi OS Anda.

Selanjutnya, tambahkan kunci penandatanganan repositori dan instal paket nginx seperti yang ditunjukkan.

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

Setelah berhasil menginstal Nginx, jalankan, aktifkan untuk memulai otomatis saat boot sistem dan periksa apakah sudah aktif dan berjalan.

---------- 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

Jika Anda menjalankan firewall sistem, Anda perlu membuka port 80 (HTTP), 443 (HTTPS) dan 5000 (Aplikasi Node), yang didengarkan server web untuk permintaan koneksi klien.

---------- 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 

Langkah 4: Konfigurasikan Nginx sebagai Reverse Proxy Untuk Aplikasi Nodejs

Sekarang buat file konfigurasi blok server untuk aplikasi Node Anda di bawah /etc/nginx/conf.d/ seperti yang ditunjukkan.

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

Salin dan tempel konfigurasi berikut (ubah 192.168.43.31 dengan IP server Anda dan tecmint.lan dengan nama domain Anda).

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;
    }
}

Simpan perubahan dan keluar dari file.

Terakhir, restart layanan Nginx untuk menerapkan perubahan terkini.

sudo systemctl restart nginx
OR
systemctl restart nginx

Langkah 5: Akses Aplikasi Nodejs melalui Browser Web

Sekarang Anda seharusnya dapat mengakses aplikasi Node Anda tanpa menyediakan port yang digunakan untuk mendengarkannya, di URL: ini adalah cara yang lebih nyaman bagi pengguna untuk mengaksesnya.

http://sysmon.tecmint.lan 

Agar nama domain pengujian Anda berfungsi, Anda perlu menyiapkan DNS lokal menggunakan file /etc/hosts, buka dan tambahkan baris di bawah ini ke dalamnya (ingat untuk mengubah 192.168.43.31 dengan IP server Anda dan tecmint.lan dengan nama doamin Anda seperti sebelumnya).

192.168.43.31 sysmon.tecmint.lan

Itu saja! Pada artikel ini, kami menunjukkan cara mengkonfigurasi Nginx sebagai reverse proxy untuk aplikasi Nodejs. Gunakan formulir umpan balik di bawah untuk mengajukan pertanyaan atau menyampaikan pendapat Anda tentang artikel ini.