Skip to content Skip to sidebar Skip to footer

Konfigurasi Nginx Sebagai Reverse Proxy

apa itu reverse proxy ?

Reverse proxy merupakan layanan yang mengambil permintaan dari klien, lalu mengirimkan permintaan ke satu atau lebih proxy server, mengambil respons, dan memberikan respons server kepada klien.

Beberapa manfaat menggunakan Nginx sebagai reverse proxy :



  • Kompresi – Jika server proxy tidak mengirim respons terkompresi, Anda dapat mengonfigurasi Nginx untuk mengkompres respons sebelum mengirimnya ke klien. Tentunya akan menghemat bandwidth dan mempercepat loading website.
  • Caching – Nginx dapat cache konten yang diterima dari respons server proxy dan menggunakannya untuk menanggapi klien tanpa harus menghubungi server utama untuk konten yang sama setiap kali ada permintaan.
  • Load Balancing – Nginx dapat melakukan load balancing untuk mendistribusikan permintaan klien di server terproxy untuk  meningkatkan kinerja, skalabilitas, dan keandalan.
  • Terminasi SSL – Nginx dapat bertindak sebagai titik akhir SSL untuk koneksi dengan klien. Nginx akan menangani dan mendekripsi koneksi SSL yang masuk dan mengenkripsi respons server proxy dengan cepat.

Syarat syarat yang dibutuhkan

Memiliki Nginx di OS Linux nya

Menggunakan Nginx sebagai Reverse Proxy:

buka file konfigurasi server block domain lalu buat lokasi dan server proxy di dalamnya :

server {
    listen 80;
    server_name www.example.com example.com;

    location /app {
       proxy_pass http://127.0.0.1:8080;
    }
}

URL server proxy ditentukan menggunakan direktif proxy_pass dan dapat menggunakan HTTP atau HTTPS sebagai protokol, dan nama domain atau alamat IP, port opsional dan URI sebagai alamat.

Konfigurasi di atas memberi tahu Nginx untuk meneruskan semua permintaan ke lokasi /app ke server proxy di http://127.0.0.1:8080.

File server block Nginx pada distribusi Ubuntu dan Debian disimpan di direktori /etc/nginx/sites-available, sedangkan pada CentOS di direktori /etc/nginx/conf.d.
Untuk menggambarkan lebih baik bagaimana cara directives location dan proxy_pass bekerja, mari kita ambil contoh berikut:

server {

    listen 80;

    server_name www.example.com example.com;


    location /blog {

       proxy_pass http://dedi1.com:8000/wordpress/;

    }

}

Jika pengunjung mengakses http://example.com/blog/my-post, Nginx akan mem-proxy permintaan ini ke server lain dengan alamat http://dedi1.com:8000/wordpress/my-post. Meski begitu, tetap server utama yang menerima dan melayani koneksi. Singkatnya hanya sebagai perantara.

Ketika alamat server proxy berisi URI, /wordpress/, permintaan URI yang diteruskan ke server proxy digantikan oleh URI yang ditentukan dalam directive. Jika alamat server proxy ditentukan tanpa URI, maka permintaan koneksi ke URI diteruskan ke server proxy.


Pengaturan Request Headers Nginx

Ketika Nginx mem-proxy permintaan, ia secara otomatis mendefinisikan dua bidang header dalam permintaan yang diproxy dari klien, Host dan Connection dan menghapus header kosong. Host diatur ke variabel $proxy_host, dan Connection diatur untuk menutup.

Untuk menyesuaikan atau mengatur tajuk untuk koneksi yang diproxy, gunakan direktif proxy_set_header diikuti dengan header value. Anda dapat menemukan daftar semua Request Headers yang tersedia dan nilai yang diizinkan di sini. Jika Anda ingin mencegah agar header tidak diteruskan ke server proxy, setel ke string kosong "".

Dalam contoh berikut, kami mengubah nilai bidang header Host ke $host dan menghapus bidang header Accept-Encoding dengan mengatur nilainya ke string kosong.


location / {

    proxy_set_header Host $host;

    proxy_set_header Accept-Encoding "";

    proxy_pass http://localhost:3000;

}

 

Konfigurasi Nginx sebagai Reverse Proxy ke server proxy non-HTTP

Untuk mengonfigurasi Nginx sebagai reverse proxy ke server proxy non-HTTP, Anda dapat menggunakan directives berikut

  • fastcgi_pass – reverse proxy ke server FastCGI.
  • uwsgi_pass – reverse proxy ke server uwsgi.
  • scgi_pass – reverse proxy ke server SCGI.
  • memcached_pass – reverse proxy ke server memcached.

Salah satu contoh paling umum adalah dengan menggunakan Nginx sebagai reverse proxy ke PHP-FPM (Menggunakan FastCGI):

server {

    # ... other directives

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }
}

Opsi Umum Reverse Proxy Nginx

Melayani konten melalui HTTPS telah menjadi standar saat ini. Pada bagian ini, kami akan memberi Anda contoh konfigurasi reverse proxy HTTPS Nginx termasuk parameter dan header proxy Nginx yang disarankan.

  location/ {

    proxy_pass http://127.0.0.1:3000;

    proxy_http_version  1.1;

    proxy_cache_bypass  $http_upgrade;


    proxy_set_header Upgrade           $http_upgrade;

    proxy_set_header Connection        "upgrade";

    proxy_set_header Host              $host;

    proxy_set_header X-Real-IP         $remote_addr;

    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;

    proxy_set_header X-Forwarded-Proto $scheme;

    proxy_set_header X-Forwarded-Host  $host;

    proxy_set_header X-Forwarded-Port  $server_port;

  }

 

  • proxy_http_version 1.1 – Menentukan versi protokol HTTP untuk proxy, secara default ditetapkan ke 1.0. Untuk Websockets dan koneksi keepalive Anda perlu menggunakan versi 1.1.
  • proxy_cache_bypass $http_upgrade – Menetapkan kondisi di mana respons tidak akan diambil dari cache.
  • Upgrade $http_upgrade and Connection "upgrade" – Field header ini diperlukan jika aplikasi Anda menggunakan Websockets.
  • Host $host – Variabel $host dalam urutan prioritas berikut ini berisi: host name dari baris permintaan, atau host name dari bidang Host request header, atau nama server yang cocok dengan permintaan.
  • X-Real-IP $remote_addr – Meneruskan alamat IP jarak jauh pengunjung asli ke server yang diproxy.
  • X-Forwarded-For $proxy_add_x_forwarded_for – Daftar yang berisi alamat IP dari setiap server yang akan di proxy sebelum di kirim ke klien.
  • X-Forwarded-Proto $scheme – Ketika digunakan di dalam server block HTTPS, akan memblokir setiap respons dari HTTP dan akan merutekan ulang menjadi HTTPS.
  • X-Forwarded-Host $host – Menentukan host asli yang diminta oleh klien.
  • X-Forwarded-Port $server_port – Menentukan port asli yang diminta oleh klien.
Sekian dulu pembahasan mengenai  Konfigurasi Nginx Sebagai Reverse Proxy jika ada kesalahan saya mohon maaf, terima kasih.


Author
Author “Yes I'm seeking for someone, to help me. So that some day I will be the someone to help some other one.”

Post a Comment for " Konfigurasi Nginx Sebagai Reverse Proxy"