haProxy path & path_beg

Baru-baru ini saya telah menyelesaikan satu situasi menggunakan path & path_beg di dalam haProxy. Sebuah laman web telah dibangunkan semula menggunakan platform yang berbeza dari yang sebelumnya. Atas sebab-sebab tertentu, terdapat fungsi pada platform lama yang masih perlu digunakan dalam keadaan URL (termasuk domain) mesti sama seperti yang asal.

Pada masa yang sama, platfom baru juga mempunyai laman web/domain yang lain. Ini juga bermaksud ia berkongsi web server. Kami ingin pointing ke path pada platfom lama hanya untuk web utama sahaja.

Berikut contoh untuk memudahkan kefahaman

  1. Web/domain utama - web.contoh (Domain sama pernah digunakan oleh platform yang lama)
    • Secara lalai, kandungan pada platform baru yang akan dipaparkan
    • Akses ke path tertentu sahaja yang menepati sekian nama atau bermula dengan sekian nama akan memaparkan laman pada platform lama
  2. Web/domain kedua - intranet.web.contoh
    • Paparan berbeza walaupun berkongsi platform
    • akses ke path sama seperti pada pada platform lama tidak akan paparkan laman milik platform lama. Mesej seperti "Halaman tidak ditemui" akan dipaparkan jika ianya tidak wujud

Berikut merupakan bentuk konfigurasi yang telahpun digunakan

frontend public
	### Contoh. Bahagian ini mempunyai lain-lain konfigurasi
	acl acl_web-host hdr(host) -i web.contoh www.web.contoh
	acl acl_web-path path -i /contohpath
	acl acl_web-pathbeg path_beg -i /contohpath1/ /contohpath2/
	use_backend weblama if acl_web-host acl_web-path || acl_web-host acl_web-pathbeg
	default_backend webbaru
	### Contoh. Bahagian ini mempunyai lain-lain konfigurasi
	
backend webbaru
	### Contoh. Bahagian ini mempunyai lain-lain konfigurasi
	server server1 192.168.10.10:80 cookie WS1  check
	server server2 192.168.10.11:80 cookie WS2  check
   
backend weblama
	server server1 192.168.11.10:443 check ssl verify none

Keterangan mengenai konfigurasi

  1. Access Control List (ACL)
    • hdr(host) - Nama Host/domain
    • path - URL mengandungi nama path tepat seperti yang diisytiharkan
    • path_beg - URL mengandungi nama path bermula dengan yang diisytiharkan
  2. Backend
    • use_backend - Gunakan sesuatu backend jika menepati syarat yang ditetapkan. Kes disini, kita mahu backend 'weblama' jika menepati syarat domain utama dan path sama seperti pada platorm yang lama.
    • default_backend - Backend yang akan digunakan oleh haProxy secara lalai

Moga perkongsian ini memberi manfaat. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *