Cara Menggunakan proxy_pass di NGINX

Cara Menggunakan proxy_pass di NGINX

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.


See also

comments powered by Disqus