Konfigurasi NGINX sebagai Reverse Proxy ke lebih dari satu services multi port

12:47 AM
Konfigurasi NGINX sebagai Reverse Proxy ke lebih dari satu services multi port
Di Posting Oleh : wandi
Kategori : jaringan Pemprograman web

NGINX
Tutorial kali ini kita akan melakukan konfigurasi NGINX sebagai Reverse Proxy ke lebih dari satu server atau host aplikasi RESTful API yang berjalan di port nya masing-masing atau multi port. Contohnya anda mempunyai lebih dari satu docker container yang berjalan di mesin komputer yang sama, dan aplikasi client hanya bisa request melalui port 80 saja, atau port 443 jika request menggunakan https. Atau mungkin hanya service biasa yang tidak di bungkus dengan docker container yang langsung berjalan di localhost atau di mesin server yang lain dengan port tertentu. Contoh ilustrasinya seperti ini:
Ilustrasi NGINX services multi port

Baiklah, kita akan membuat NGINX berfungsi sebagai reverse proxy seperti gambar di atas. Server yang kita gunakan untuk menjalankan nginx menggunakan operating system Linux Ubuntu.  Ikuti langkah-langkah berikut ini: 1. Install nginx di server linux ubuntu:
$ sudo apt-get install nginx
2. Buatlah file konfigurasi baru di dalam folder sites-available:
$ sudo vi /etc/nginx/sites-available/api.example.com.conf
3. Copy paste script berikut ke dalam file /etc/nginx/sites-available/api.example.com.conf
server {
 keepalive_timeout 30;
 # SSL configuration
 listen 443 ssl default_server;
 listen [::]:443 ssl default_server;
 server_name api.example.com;
 ssl_certificate /etc/nginx/ssl/certificate.crt;
 ssl_certificate_key /etc/nginx/ssl/certificate.key;
 ssl_session_cache    shared:SSL:10m;
 ssl_session_timeout  10m;
 # application-a
 location /application-a {
  include /etc/nginx/global/include.request.conf;
  rewrite ^/application-a(/.*) $1 break;
  proxy_pass http://127.0.0.1:8881;
 }
 # application-b
 location /application-b {
  include /etc/nginx/global/include.request.conf;
  rewrite ^/application-b(/.*) $1 break;
  proxy_pass http://127.0.0.1:8882;
 }
 # application-c
 location /application-c {
  include /etc/nginx/global/include.request.conf;
  rewrite ^/application-c(/.*) $1 break;
  proxy_pass http://127.0.0.1:8883;
 }
 location / {
  try_files $uri $uri/ =404;
 }
 access_log /etc/nginx/logs/access.log;
 error_log  /etc/nginx/logs/error.log;
}

server {
 listen 80 default_server;
 listen [::]:80 default_server;
 server_name    api.example.com;
 rewrite        ^ https://$server_name$request_uri? permanent;
}
Ganti api.example.com dengan nama domain anda. Jika tidak punya nama domain, ganti dengan ip public server anda. 4. Buat file /etc/nginx/global/include.request.conf
$ sudo mkdir /etc/nginx/global
$ sudo vi /etc/nginx/global/include.request.conf
5. Copy paste script berikut ke dalam file /etc/nginx/global/include.request.conf
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;
6. Buat file /etc/nginx/ssl/certificate.crt dan /etc/nginx/ssl/certificate.key sehingga bisa di akses melalui https.
$ sudo mkdir /etc/nginx/ssl
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/certificate.key -out /etc/nginx/ssl/certificate.crt
7. Aktifkan konffigurasi di atas dengan membuat softlink di folder /etc/nginx/sites-enable
$ sudo ln -s /etc/nginx/sites-available/api.example.com.conf /etc/nginx/sites-enabled/
8. Reload konfigurasi nginx
$ sudo systemctl reload nginx
Okey, sekarang aplikasi RESTful API anda yang terdiri dari beberapa aplikasi dengan port nya masing-masing atau multi port, bisa di akses melalui port 80 atau 443. Seperti contoh berikut: https://api.example.com/application-a/.... https://api.example.com/application-b/.... https://api.example.com/application-c/.... Port nya tidak perlu disertakan pada alamat url, karena secara default akan mengakses ke port 80 untuk http dan ke port 443 untuk https. Sekian tutorial kali ini, semoga tutorial ini bisa sedikit membantu anda memanfaatkan NGINX sebagai proxy untuk aplikasi backend multi port sehingga bisa diakses dari satu port saja. Jika ada pertanyaan atau bagian tutorial yang kurang jelas atau anda mengalami kesulitan saat mengikuti langkah-langkah di atas, silahkan bertanya lewat kolom komentar. Terima kasih sudah mampir di blog yang sangat sederhana ini. Semoga sukses.
Mau liat atau download source code aplikasi premium bisa disini.
Previous
Next Post »
0 Komentar