<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Eka Febriansah</title>
    <description>The latest articles on Forem by Eka Febriansah (@radenfebri).</description>
    <link>https://forem.com/radenfebri</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F892489%2F092fc40a-2948-4fb7-81db-6530decf3d5a.jpeg</url>
      <title>Forem: Eka Febriansah</title>
      <link>https://forem.com/radenfebri</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/radenfebri"/>
    <language>en</language>
    <item>
      <title>NGINX Reverse Proxy - NGINX Documentation</title>
      <dc:creator>Eka Febriansah</dc:creator>
      <pubDate>Sun, 24 Jul 2022 02:12:00 +0000</pubDate>
      <link>https://forem.com/radenfebri/nginx-reverse-proxy-nginx-documentation-1ll1</link>
      <guid>https://forem.com/radenfebri/nginx-reverse-proxy-nginx-documentation-1ll1</guid>
      <description>&lt;p&gt;&lt;u&gt;1. Pengertian NGINX&lt;/u&gt;&lt;br&gt;
&lt;u&gt;2. Install NGINX&lt;/u&gt;&lt;br&gt;
&lt;u&gt;3. Install Aplikasi Web NodeJS (Express)&lt;/u&gt;&lt;br&gt;
&lt;u&gt;4. Penerapan Reserve Proxy&lt;/u&gt;&lt;br&gt;
&lt;u&gt;5. Penerapan Request Rate Limit&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzwfev13da5l8pude2lja.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzwfev13da5l8pude2lja.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Apa itu Nginx?
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;


&lt;h2&gt;
  
  
  Install NGINX di Linux
&lt;/h2&gt;

&lt;p&gt;Saya akan menggunakan perintah di bawah ini, dengan penerapan menggunakan Ubuntu 22.04 LTS&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install nginx -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Install Aplikasi Web NodeJS (Express)
&lt;/h2&gt;

&lt;p&gt;Bikin direktori terlebih dahulu, dan selanjutnya install node_module di dalamnya&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo su -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir radenfebri
cd radenfebri
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Gunakan npm initperintah untuk membuat package.jsonfile untuk aplikasi Anda. Untuk informasi selengkapnya tentang cara package.jsonkerjanya, lihat Spesifik penanganan package.json npm.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;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:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;entry point: (index.js)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Sekarang instal Express di myappdirektori dan simpan di daftar dependensi. Sebagai contoh:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install express
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Untuk menginstal Express sementara dan tidak menambahkannya ke daftar dependensi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install express --no-save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Untuk mencoba membuat web nya silahkan membuat file dengan perintah di bawah:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch app.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;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:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require('express')
const app = express()
const port = 8000

app.get('/', (req, res) =&amp;gt; {
  res.send('Hello World!')
})

app.listen(port, () =&amp;gt; {
  console.log(`Example app listening on port ${port}`)
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Langkah selanjutnya jalankan aplikasiny dengan cara ketikkan perintah di bawah:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node app.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Penerapan Reserve Proxy
&lt;/h2&gt;

&lt;p&gt;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:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /etc/nginx/sites-available/default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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;

        }

      }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo service nginx restart 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Penerapan Request Rate Limit
&lt;/h2&gt;

&lt;p&gt;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.&lt;br&gt;
Masuk ke direktori /etc/nginx/sites-available/default&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /etc/nginx/sites-available/default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Tambahkan perintah di bawah ini:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;limit_req_zone $binary_remote_addr zone=one:1m rate=6r/m;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Tambahkan perintah di bawah ini:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;limit_req zone=one;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Full Code :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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;

        }

      }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Lakukan Restart pada webserver NGINX agar bisa diterapkan Rate Limit dan berjalan normal kembali&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo service nginx restart 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>node</category>
      <category>nginx</category>
      <category>devops</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
