Converters

Belirli bir alan adına bağlı olarak hangi backend 'in kullanılması gerektiğini aramak için daha önce oluşturduğunuz hosts.map dosyasını kullanacağız.

Converter, HAProxy yapılandırmanıza bir girdi alan ve ilişkili bir çıktı döndüren bir yönergedir. Çeşitli dönüştürücüler vardır. Örneğin, belirli bir dizeyi küçük harfle değiştirmek için lower dönüştürücüyü veya URL'nin kodunu çözmek için url_dec değerini kullanabilirsiniz.

frontend fe_main
    bind :80
    use_backend %[str(example.com),map(/etc/haproxy/maps/hosts.map)]

Anahtar olarak example.com içeren hosts.map dosyasındaki ilk satırın değeri döndürülür.str (example.com) ifadesine ve dönüştürücüden virgülle ayrıldığına dikkat edin.

Bu ifade çalışma zamanında değerlendirildiğinde, istekleri be_static sunucu havuzuna yönlendiren use_backend be_static satırına dönüştürülür. Tabii ki, example.com gibi sabit bir dizeden geçmek yerine, bir HTTP Header veya URL parametresi değerini gönderebilirsiniz. Aşağıdaki örnek giriş olarak Host Header değerini kullanır.

use_backend %[req.hdr(host),lower,map(/etc/haproxy/maps/hosts.map,be_static)]

Map dönüştürücü en fazla iki bağımsız değişken alır. Birincisi Map dosyanızın yoludur. İkinci isteğe bağlı bağımsız değişken, eşleşen anahtar bulunmazsa kullanılacak varsayılan bir değer bildirir. Dolayısıyla, bu durumda, eşleşme yoksa, be_static kullanılacaktır. Giriş, Map dosyasındaki birden çok değer ile eşleşirse, HAProxy birincisini döndürür. Map dönüştürücü, dosyada tam bir eşleşme arar, ancak kısmi eşleşme için fırsatlar sağlayan birkaç seçenek vardır. En yaygın olarak kullanılanlar aşağıda eklenmiştir:

map_beg

Map dosyasındaki girdinin başlangıcına uyan girdileri arar (örneğin “abcd” girdisi dosyadaki “a” ile eşleşir)

map_end

Map dosyasındaki girdinin sonuyla eşleşen girdileri arar (örneğin, “abcd” girdisi dosyadaki “d” ile eşleşir).

map_sub

Map dosyasında değerin bir alt dizesini oluşturan girişleri arar (örneğin, “abcd” girişi dosyadaki “ab” veya “c” ile eşleşir).

map_ip

Bu, girişi bir IP adresi olarak alır ve Map'de arar. Map'in içinde maskeler (192.168.0.0/16 gibi) varsa, aralıktaki herhangi bir IP eşleşir. Bu, giriş türünün bir IP adresi olması durumunda varsayılan değerdir.

map_reg

Bu, Map'deki örnekleri normal ifadeler(regex) olarak okur ve normal ifade eşleşirse eşleşir.

map_str

Map için bir takma ad. Bu, bir dizeyi giriş olarak alır, tüm anahtarla eşleşir ve değeri dize olarak döndürür

Last updated