NGINX adalah aplikasi web server yang dapat digunakan sebagai sebuah reverse proxy. Request yang diterima oleh NGINX diteruskan ke origin server, lalu response di teruskan kembali ke client. NGINX menggunakan directive proxy_pass
yang diletakkan di dalam suatu location
yang sudah ditentukan. Artikel ini akan menunjukkan bagaimana caranya untuk menggunakan proxy_pass
.
Cara Menggunakan proxy_pass
Buat sebuah location
di dalam directive server
. Gunakan proxy_pass
dengan URI dari server origin sebagai parameter. Contoh:
server {
server_name localhost;
listen 80;
location /my_api {
proxy_pass http://192.168.100.17:5005;
}
}
Pada contoh diatas, kita menggunakan http://192.168.100.17:5005
sebagai origin server. Semua request dengan URL yang diawali dengan /my_api
akan diteruskan ke alamat tersebut. Alamat origin server dapat berupa nama domain atau IP address. Liat contoh dibawah untuk berbagai penggunaan proxy_pass
. Beri komentar kalo kamu punya contoh yang lain.
Cara proxy_pass ke suatu alamat
location /my_api {
proxy_pass http://192.168.100.17:5005;
}
Request ke URI yang dimulai dengan /my_api
akan diproxy. Contoh:/my_api
diproxy ke http://192.168.100.17:5005/my_api
/my_api_suffix
diproxy ke http://192.168.100.17:5005/my_api_suffix
/my_api/something
diproxy ke http://192.168.100.17:5005/my_api/something
Kita bisa menggunakan alamat origin server seperti ini:
location /my_api {
proxy_pass http://192.168.100.17:5005/some_path;
}
Kalau alamat server memiliki sebuat path, request URI di directive location
akan di ganti dengan URI pada alamat origin server. Contoh:/my_api
diproxy ke http://192.168.100.17:5005/some_path
Cara proxy_pass ke Suatu File
Kita bisa proxy request ke sebuat file.
location /page {
root /path/to/your/directory;
try_files /mypage.html 404;
}
Ketika ada request ke /page
, NGINX akan merespond dengan file mypage.html
yang ada di /path/to/your/directory
. Kalau file nya tidak ada, akan direspond dengan code 404.
Cara proxy_pass dengan location Match Regex
Kita dapat menggunakan regex pattern pada location
. Contoh:
location ~ ^/(my_api|our_api) {
proxy_pass http://192.168.100.17:5005;
}
Requst dengan URI yang cocok dengan pattern tersebut akan di proxy./my_api
diproxy ke http://192.168.100.17:5005/my_api
/our_api
diproxy ke http://192.168.100.17:5005/our_api
Cara proxy_pass dengan Regex Search pada location
Kita dapat menggunakan regex untuk mencari suatu bagian pada URI dan menggunakannya pada URI origin server.
location ~ ^/some_prefix/(.*)$ {
proxy_pass http://192.168.100.17:5005/$1$is_args$args;
}
Ini akan mengambil URI setelah /some_prefix
. Ide nya adalah untuk menghilangkan /some_prefix
pada URI origin server. Contoh:/some_prefix/my_api
diproxy ke http://192.168.100.17:5005/my_api
Kita menulis $is_args$args
pada alamat server untuk meneruskan parameter pada URI seperti ?param=value
. Tanpa ini, parameter tersebut tidak akan diteruskan.
Cara Whitelist Client IP Address
Kita dapat me-whitelist IP address pada directive location
.
location /my_api {
allow 192.168.0.0/16;
deny all;
proxy_pass http://192.168.100.17:5005;
}
Pada contoh ini, hanya client dengan IP antara 192.168.0.0 - 192.168.255.255 yang dapat mengakses api. IP lain akan mendapatkan response code 403.
Cara Blacklist Client IP Address
Kita juga dapat me-blacklist IP address.
location /my_api {
deny 192.168.1.17;
proxy_pass http://192.168.100.17:5005;
}
Client dengan IP 192.168.1.17
akan mendapatkan 403 ketika mengakses api.