Konfigurasi MAP Module Nginx (Management User Agent)


Konfigurasi Map Module Nginx (Management User Agent) - Pada kesempatan kali ini www.dimasrio.com akan menjelaskan bagaimana melakukan konfigurasi map module pada nginx. Map module nginx memungkinkan kita untuk melakukan pemetaan variable sehingga respond dapat disesuaikan tergantung dari nilai variable tersebut. 

Masih dengan file konfigurasi sebelumnya,  bagi sobat yang terlewat bisa membaca link di bawah ini.
Kongiruasi Rewrite, Return dan Try_files pada Nginx
Install Nginx Source di CentOS 7
Secara default ngx_http_map_module sudah include dengan pada installasi nginx, sehingga kita tidak perlu melakukan recompile nginx. Pada contoh kali ini kita akan membuat pemetaan untuk menentukan url berdasarkan user agent. Selain memetakan user agent, http map ini dapat juga digunakan untuk melakukan pemetaan geoip, mapping url ataupun yang lainnya sesuai dengan kebutuhan.

Nginx HTTP Map Module

Sabelum kita membuat sebuah map file, buat terlebih dahulu m.html untuk user agent mobile dan apps.html untuk aplikasi pada direktory /opt/nginx/html. Untuk file *.html contentnya silahkan sesuaikan masing-masing.

Index File
touch /opt/nginx/html/m.html
touch /opt/nginx/html/apps.html
Map File
mkdir -p /opt/nginx/conf/map
nano map/dimzrio.conf
Content:
map $http_user_agent $user_client {
~*(curl|python) "apps";
~*(android|mobile) "mobile";
˜*ip(hone|od) "mobile";
~*(postman|insomnia) "disallow";
}
File map di atas akan mengelompokan berdasarkan user agent, sebagai contoh jika user agent android maka akan dikatagorikan sebagai mobile. Jika client mengakses dimzrio.com dari aplikasi curl akan di arahkan ke apps.dimzrio.com sedangkan jika di akses melalui aplikasi insomnia akan di tolak. Selanjutnya tambahkan konfigurasi map pada vhost.
nano /opt/nginx/conf/vhosts/dimzrio-com.conf
Content:
include map/*.conf;

server {
........
if ($user_client = "apps" ){
return 301 https://apps.dimzrio.com$request_uri;
}

if ($user_client = "disallow" ){
return 404;
}

if ($user_client = "mobile" ){
return 301 https://m.dimzrio.com$request_uri;
}
........
Note : File map config harus diletakan di luar server block sedangkan untuk logical match dari harus dalam server block. Pada contoh di atas saya meletakannya setelah server name.

Buat sub domain apps.dimzrio.com dan m.dimzrio.com.

Apps Conf
nano /opt/nginx/conf/vhosts/app-dimzrio-com.conf
Content:
server {
listen 80;
listen 443 ssl http2;
access_log /var/log/nginx/apps-dimzrio-access.log main;
error_log /var/log/nginx/apps-dimzrio-error.log;
server_name apps.dimzrio.com;
......
location / {
root /opt/nginx/html;
index apps.html;
}
...... selanjutnya samakan location block dengan dimzrio.conf ......
}
 Mobile Conf
nano /opt/nginx/conf/vhosts/m-dimzrio-com.conf 
Content:
server {
listen 80;
listen 443 ssl http2;
access_log /var/log/nginx/m-dimzrio-access.log main;
error_log /var/log/nginx/m-dimzrio-error.log;
server_name m.dimzrio.com;
......
location / {
root /opt/nginx/html;
index m.html;
}
...... selanjutnya samakan location block dengan dimzrio.conf ......
}
Note: Untuk lebih mudahnya sobat dapat copy saja dari dimzrio.conf dan sesuaikan konfigurasi seperti di atas.  Atau letakan seperti gambar di bawah ini.

Output :

Save dan Restart nginx.
systemctl restart nginx

Uji Coba

Curl

Curl dengan User Agent Android


Insomnia


Karena sudah ditentukan pada file konfigurasi, bahwa jika client menggunakan aplikasi insomnia maka akan mengembalikan error 404.

Demikian tutorial nginx kali ini mengenai konfigurasi map module nginx (management user agent). Semoga bermanfaat bagi kita semua dan selamat mencoba.!!!


EmoticonEmoticon