DEV Community

Cover image for NGINX Reverse Proxy - NGINX Documentation
Eka Febriansah
Eka Febriansah

Posted on • Edited on

NGINX Reverse Proxy - NGINX Documentation

1. Pengertian NGINX
2. Install NGINX
3. Install Aplikasi Web NodeJS (Express)
4. Penerapan Reserve Proxy
5. Penerapan Request Rate Limit

Image description

Apa itu Nginx?

Seperti penjelasan di atas, Nginx adalah web server berbasis open source yang memiliki keunggulan untuk membuat performa website kamu terlihat lebih canggih dan powerful. Salah satu kelebihan Nginx adalah mudah terkonfigurasi.

Nginx adalah web server yang pertama kali dirilis pada bulan Oktober 2004 oleh pria berkewarganegaraan Rusia, Igor Sysoev. Mulanya, fungsi Nginx adalah sebagai HTTP web serving saja.


Install NGINX di Linux

Saya akan menggunakan perintah di bawah ini, dengan penerapan menggunakan Ubuntu 22.04 LTS

sudo apt-get update
Enter fullscreen mode Exit fullscreen mode
sudo apt-get install nginx -y
Enter fullscreen mode Exit fullscreen mode

Install Aplikasi Web NodeJS (Express)

Bikin direktori terlebih dahulu, dan selanjutnya install node_module di dalamnya

sudo su -
Enter fullscreen mode Exit fullscreen mode
mkdir radenfebri
cd radenfebri
Enter fullscreen mode Exit fullscreen mode

Gunakan npm initperintah untuk membuat package.jsonfile untuk aplikasi Anda. Untuk informasi selengkapnya tentang cara package.jsonkerjanya, lihat Spesifik penanganan package.json npm.

npm init
Enter fullscreen mode Exit fullscreen mode

Perintah ini meminta Anda untuk beberapa hal, seperti nama dan versi aplikasi Anda. Untuk saat ini, Anda cukup menekan RETURN untuk menerima default untuk sebagian besar dari mereka, dengan pengecualian berikut:

entry point: (index.js)
Enter fullscreen mode Exit fullscreen mode

Enter app.js, atau apa pun yang Anda inginkan untuk nama file utama. Jika Anda menginginkannya index.js, tekan RETURN untuk menerima nama file default yang disarankan.

Sekarang instal Express di myappdirektori dan simpan di daftar dependensi. Sebagai contoh:

npm install express
Enter fullscreen mode Exit fullscreen mode

Untuk menginstal Express sementara dan tidak menambahkannya ke daftar dependensi:

npm install express --no-save
Enter fullscreen mode Exit fullscreen mode

Untuk mencoba membuat web nya silahkan membuat file dengan perintah di bawah:

touch app.js
Enter fullscreen mode Exit fullscreen mode

Pada tutorial ini saya menjalankan aplikasi web Express ini menggunakan port 8000, kalian bisa edit di bagian app.js, Edit di dalamnya seperti dokumentasi di bawah ini:

const express = require('express')
const app = express()
const port = 8000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})
Enter fullscreen mode Exit fullscreen mode

Langkah selanjutnya jalankan aplikasiny dengan cara ketikkan perintah di bawah:

node app.js
Enter fullscreen mode Exit fullscreen mode

Penerapan Reserve Proxy

Masuk ke direktori /etc/nginx/sites-available/default dan kemudian konfigurasi, nantinya aplikasi akan di akses melalui port 3000 dan port 3000 ini akan memanggil atau di reverse ke port 8000 yang ada pada localhost. Kurang lebihnya konfigurasi seperti di bawah ini:

sudo nano /etc/nginx/sites-available/default
Enter fullscreen mode Exit fullscreen mode
server {
        listen 3000 default_server;
        listen [::]:3000 default_server;

      root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;SS


        location / {

                proxy_pass http://localhost:8000;
                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;

        }

      }
Enter fullscreen mode Exit fullscreen mode
sudo service nginx restart 
Enter fullscreen mode Exit fullscreen mode

Penerapan Request Rate Limit

Rate Limit pada NGINX ini bisa digunakan untuk mengamankan sebuah web server agar si pengakses atau si penyerang website kita agar tidak terus-menerus mereka merequest packet dan jug digunakan untuk mengamankan bandwidth file pada webserver.
Masuk ke direktori /etc/nginx/sites-available/default

sudo nano /etc/nginx/sites-available/default
Enter fullscreen mode Exit fullscreen mode

Tambahkan perintah di bawah ini:

limit_req_zone $binary_remote_addr zone=one:1m rate=6r/m;
Enter fullscreen mode Exit fullscreen mode

Tambahkan perintah di bawah ini:

limit_req zone=one;
Enter fullscreen mode Exit fullscreen mode

Full Code :

limit_req_zone $binary_remote_addr zone=one:1m rate=6r/m;

    server {
        listen 3000 default_server;
        listen [::]:3000 default_server;

      root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;SS


        location / {

                proxy_pass http://localhost:8000;
                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;

            limit_req zone=one;

        }

      }
Enter fullscreen mode Exit fullscreen mode

Lakukan Restart pada webserver NGINX agar bisa diterapkan Rate Limit dan berjalan normal kembali

sudo service nginx restart 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)