GNU/Linux >> Belajar Linux >  >> Linux

NGINX sebagai Proxy Terbalik untuk aplikasi Node atau Angular

Proksi terbalik adalah server yang mengambil sumber daya untuk klien dari satu atau lebih server hulu. Biasanya menempatkan dirinya di belakang firewall di jaringan pribadi dan meneruskan permintaan klien ke server hulu ini. Proxy terbalik sangat meningkatkan keamanan, kinerja, dan keandalan aplikasi web apa pun.

Banyak aplikasi web modern yang ditulis dalam NodeJS atau Angular dapat berjalan dengan server mandiri mereka sendiri tetapi tidak memiliki sejumlah fitur lanjutan seperti load balancing , keamanan , dan percepatan bahwa sebagian besar aplikasi ini menuntut. NGINX dengan fitur-fitur canggihnya dapat bertindak sebagai proxy terbalik saat melayani permintaan untuk NodeJS atau aplikasi Angular.

Server Proksi Terbalik NGINX

Dalam tutorial ini, kita akan mengeksplorasi bagaimana NGINX dapat digunakan sebagai server proxy terbalik untuk aplikasi Node atau Angular. Diagram di bawah ini memberikan gambaran umum tentang cara kerja server proxy terbalik dan memproses permintaan klien serta mengirim respons.

Proksi Terbalik Nginx

Prasyarat

  • Anda telah menginstal NGINX dengan mengikuti tutorial kami dari sini.

Asumsi

  • Server NGINX dapat diakses dari domain publik.
  • Aplikasi Node atau Angular akan berjalan di sistem terpisah (server upstream) di jaringan pribadi dan dapat dijangkau dari server NGINX. Meskipun sangat mungkin untuk melakukan pengaturan dalam satu sistem.
  • Tutorial ini menggunakan variabel seperti SUBDOMAIN.DOMAIN.TLD dan PRIVATE_IP . Ganti dengan nilai-nilai Anda sendiri di tempat yang sesuai.

Aplikasi NodeJS

Dengan asumsi Anda telah menginstal NGINX di lingkungan Anda, Mari kita buat contoh aplikasi NodeJS yang akan diakses melalui proxy terbalik NGINX. Untuk memulainya, siapkan lingkungan node dalam sistem yang berada di jaringan pribadi Anda.

Instal Node

Sebelum melanjutkan dengan menginstal NodeJS dan versi terbaru dari npm(node ​​package manager), periksa apakah sudah diinstal atau belum:


# node --version 
# npm --version

Jika perintah di atas mengembalikan versi NodeJS dan NPM maka lewati langkah instalasi berikut dan lanjutkan dengan membuat contoh aplikasi NodeJS.

Untuk menginstal NodeJS dan NPM, gunakan perintah berikut:


# apt-get install nodejs npm

Setelah terinstal, periksa kembali versi NodeJS dan NPM.


# node --version
# npm --version

Buat contoh aplikasi Node

Setelah lingkungan NodeJS siap, buat aplikasi contoh menggunakan ExpressJS. Oleh karena itu, buat folder untuk aplikasi node dan instal ExpressJS.


# mkdir node_app  
# cd node_app
# npm install express

Sekarang menggunakan editor teks favorit Anda, buat app.js dan tambahkan konten berikut ke dalamnya.


# vi app.js
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello World !'))
app.listen(3000, () => console.log('Node.js app listening on port 3000.'))

Jalankan aplikasi node menggunakan perintah berikut:


# node app.js

Buat kueri curl ke nomor port 3000 untuk mengonfirmasi bahwa aplikasi berjalan di localhost.


# curl localhost:3000
Hello World !

Pada titik ini, aplikasi NodeJS akan berjalan di server upstream. Pada langkah terakhir, kami akan mengonfigurasi NGINX untuk bertindak sebagai proxy terbalik untuk aplikasi node di atas. Untuk saat ini, mari kita lanjutkan dengan membuat aplikasi sudut, langkah-langkahnya diberikan di bawah ini:

Aplikasi sudut

Angular adalah kerangka kerja JavaScript lain untuk mengembangkan aplikasi web menggunakan TypeScript. Secara umum, aplikasi sudut diakses melalui server mandiri yang dikirimkan bersamanya. Namun karena beberapa kelemahan menggunakan server mandiri ini dalam lingkungan produksi, proxy terbalik ditempatkan di depan aplikasi sudut untuk melayaninya dengan lebih baik.

Mengatur lingkungan sudut

Karena Angular adalah kerangka kerja JavaScript, itu harus memiliki Nodejs dengan versi> 8.9 terinstal di sistem. Oleh karena itu sebelum melanjutkan dengan menginstal CLI sudut, cepat atur lingkungan simpul dengan mengeluarkan perintah berikut di terminal.


# curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
# apt-get install nodejs npm

Sekarang lanjutkan dengan menginstal Angular CLI yang membantu kita membuat proyek, menghasilkan kode aplikasi dan pustaka untuk aplikasi sudut apa pun.


# npm install -g @angular/cli

Pengaturan yang diperlukan untuk lingkungan Angular sekarang selesai. Pada langkah selanjutnya, kita akan membuat aplikasi angular.

Buat aplikasi sudut

Buat aplikasi Angular menggunakan perintah CLI sudut berikut:


# ng new angular-app

Ubah ke direktori sudut yang baru dibuat dan jalankan aplikasi web dengan menentukan nama host dan nomor port:


# cd angular-app
# ng serve --host PRIVATE_IP --port 3000

Buat kueri curl ke nomor port 3000 untuk mengonfirmasi bahwa aplikasi sudut berjalan di localhost.


# curl PRIVATE_IP:3000

Pada titik ini, aplikasi sudut akan berjalan di server hulu Anda. Pada langkah berikutnya, kita akan mengonfigurasi NGINX untuk bertindak sebagai proxy terbalik untuk aplikasi sudut di atas.

Konfigurasikan NGINX sebagai Proksi Terbalik

Arahkan ke direktori konfigurasi host virtual NGINX dan buat blok server yang akan bertindak sebagai proxy terbalik. Ingat sistem di mana Anda telah menginstal NGINX sebelumnya dapat dijangkau melalui Internet yaitu IP publik dilampirkan ke sistem.


# cd /etc/nginx/sites-available
# vi node_or_angular_app.conf

server {  
              listen 80;
              server_name SUBDOMAIN.DOMAIN.TLD;
              location / {  
                           proxy_pass https://PRIVATE_IP:3000;  
                           proxy_http_version 1.1;  
                           proxy_set_header Upgrade $http_upgrade;  
                           proxy_set_header Connection 'upgrade';  
                           proxy_set_header Host $host;  
                           proxy_cache_bypass $http_upgrade;  
               }  
}

Arahan proxy_pass dalam konfigurasi di atas membuat server memblokir proxy terbalik. Semua lalu lintas yang ditujukan ke domain SUBDOMAIN.DOMAIN.TLD dan kecocokan dengan blok lokasi root (/) akan diteruskan ke https://PRIVATE_IP:3000 tempat node atau aplikasi sudut berjalan.

Proxy Terbalik NGINX untuk Aplikasi NodeJS dan Angular?

Blok server di atas akan bertindak sebagai proxy terbalik untuk node atau aplikasi sudut. Untuk melayani aplikasi node dan angular secara bersamaan menggunakan NGINX reverse proxy, jalankan saja di dua nomor port yang berbeda jika Anda ingin menggunakan sistem yang sama untuk keduanya.

Juga sangat mungkin untuk menggunakan dua server upstream terpisah untuk menjalankan aplikasi node dan angular. Selanjutnya, Anda juga perlu membuat blok server NGINX lain dengan nilai yang cocok untuk server_name dan proxy_pass arahan.

Bacaan yang Disarankan :Memahami File Konfigurasi NGINX.

Periksa kesalahan sintaksis di blok server di atas dan aktifkan yang sama. Terakhir, muat ulang NGINX untuk menerapkan setelan baru.


# nginx -t
# cd /etc/nginx/sites-enabled
# ln -s ../sites-available/node_or_angular_app.conf .
# systemctl reload nginx

Sekarang arahkan browser web favorit Anda ke https://SUBDOMAIN.DOMAIN.TLD , Anda akan disambut dengan pesan selamat datang dari aplikasi Node atau Angular.

Halaman Sambutan Sudut

Ringkasan

Itu saja untuk mengonfigurasi proxy terbalik NGINX untuk aplikasi NodeJS atau Angular. Sekarang Anda dapat melanjutkan dengan menambahkan sertifikat SSL gratis seperti Let's Encrypt untuk mengamankan aplikasi Anda!


Linux
  1. Cara Mengatur Proksi Terbalik Nginx

  2. Konfigurasi Apache untuk WebSockets menggunakan Proxy Terbalik

  3. Siapkan WSO2 dengan NGINX Reverse Proxy untuk URL khusus

  1. Panduan untuk menjalankan proxy Terbalik untuk HTTP(S), SSH, dan MySQL/MariaDB menggunakan NGINX

  2. Reverse Proxy dengan Nginx:Panduan Pengaturan Langkah-demi-Langkah

  3. Nginx membalikkan proxy tanpa penghentian SSL

  1. Cara Mengonfigurasi Nginx Reverse Proxy untuk Kibana

  2. Cara menginstal Nginx sebagai Reverse Proxy untuk Apache di Ubuntu 15.10

  3. Cara Install WildFly Java Application Server dengan Nginx Reverse Proxy di Ubuntu 20.04