Cara Setting Nginx Sebagai Reverse Proxy

Pada artikel kali ini saya akan membahas tentang bagaimana cara kita mengimplementasikan setting Nginx sebagai reverse proxy dan menggunakan Nginx pada praktiknya yang dimana dicombine dengan Node JS.

Reverse proxy sendiri adalah sebuah layanan yang mengambil permintaan client, dan kemudian mengirimkan permintaan ke satu atau lebih proxy server, mengambil respons, dan memberikan respons server kepada client

Karena kinerja dan skalabilitasnya, Nginx sering digunakan sebagai proxy terbalik untuk server HTTP dan non-HTTP. Konfigurasi Reverse Proxy yang umum dan paling sering diimplementasikan adalah menempatkan Nginx di depan aplikasi NodeJs, Pyhthon atau Java, dan yang akan kita implementasikan adalah NodeJS.

Berikut topologi / konsepnya :

Step by Step Cara Setting Nginx Sebagai Reverse Proxy :

Step 1: Installing Nodejs and NPM in Linux

  • Install on RHEL Centos :
---------- 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 -
  • Install on 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

Step 2: Creating a Nodejs Application

  • Create file di folder yang anda inginkan & buat program js
$ sudo mkdir -p /var/www/html/gunawan
$ sudo vim /var/www/html/gunawan/server.js
  • Dengan isi file tersebut sebagai berikut
const http = require("http");
const host = '192.168.2.2';
const port = 3000;
const requestListener = function (req, res) {
    res.writeHead(200);
    res.end("My first server!");
};

const server = http.createServer(requestListener);
server.listen(port, host, () => {
    console.log(`Server is running on http://${host}:${port}`);
});
  • Selanjutnya buka browser anda dan akses URL http://192.168.2.2:3000

Step 3: Install Nginx Reverse Proxy in Linux

  • Untuk install Nginx sendiri saya sudah pernah membuat artikelnya klik link disini.

Step 4: Configure Nginx as Reverse Proxy For Nodejs Application

  • Create server block configuration / biasa di bilang Vhost conf nya si web server
$ cd /etc/nginx/sites-available/
$ sudo mkdir -p igunawan.conf
  • Yang isinya adalah dimana nodejs tadi kita akses menggunakan http (port 80) dan dari Nginx melakukan reverse proxy menjadi jembatan penghubung antara client & node js “web server” itu sendiri dengan merubah jalur menjadi HTTPS (port 443) & juga jika kita menggunakan nodejs tanpa reverse proxy maka kita harus menambahkan angka 3000 dibelakang domain/IP dengan menggunakan metode ini tidak perlu jadi langsung di redirect ke HTTPS, kurang lebih itu isi dari script berikut.
server {
  listen 80;
    
  server_name igunawan.com;
    
  location / {
    proxy_pass http://192.168.2.2: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;
  }
}
  • Kemudian save lalu link ke sites-enabled nginx
$cd /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/igunawan.conf ./
  • Kemudian lakukan test Nginx & restart servie Nginx nya
$ nginx -t
$ sudo systemctl restart nginx

Step 5: Access Nodejs Application via Web Browser

  • Kemudian jika sudah maka bisa melakukan installasi / obtain SSL di domain tsb (untuk cara install SSL sudah pernah saya buat untuk artikelnya klik link disini )
  • Jika sudah maka test akses web server / aplikasi kalian menggunakan domain https://igunawan.com

Selamat Mencoba Terima kasih

Leave a Reply

Your email address will not be published. Required fields are marked *