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
Buat sub domain apps.dimzrio.com dan m.dimzrio.com.
Apps Conf
Output :
Index File
touch /opt/nginx/html/m.htmlMap File
touch /opt/nginx/html/apps.html
mkdir -p /opt/nginx/conf/mapContent:
nano map/dimzrio.conf
map $http_user_agent $user_client {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.
~*(curl|python) "apps";
~*(android|mobile) "mobile";
˜*ip(hone|od) "mobile";
~*(postman|insomnia) "disallow";
}
nano /opt/nginx/conf/vhosts/dimzrio-com.confContent:
include map/*.conf;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.
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;
}
........
Buat sub domain apps.dimzrio.com dan m.dimzrio.com.
Apps Conf
nano /opt/nginx/conf/vhosts/app-dimzrio-com.confContent:
server {Mobile Conf
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 ......
}
nano /opt/nginx/conf/vhosts/m-dimzrio-com.confContent:
server {Note: Untuk lebih mudahnya sobat dapat copy saja dari dimzrio.conf dan sesuaikan konfigurasi seperti di atas. Atau letakan seperti gambar di bawah ini.
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 ......
}
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
Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.