> For the complete documentation index, see [llms.txt](https://oguzhaninan.gitbook.io/haproxy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://oguzhaninan.gitbook.io/haproxy/acl/format.md).

# Format

ACL belirtmenin iki yolu vardır *isimlendirilmiş ACL* ve *satır içi ACL*. Aşağıda *isimlendirilmiş* bir tanım var.

```
acl is_static path -i -m beg /static
```

ACL anahtar sözcüğüyle başlayıp, ardından bir isim ve ardından koşul gelir. Burada `is_static` adlı bir ACL'miz var. Aşağıdaki şekilde kullanmanın nedeni birden fazla yerde aynı ACL kullanılacaksa doğrudur.

```
acl is_static path -i -m beg /static
use_backend be_static if is_static
```

`path -i -m beg /static` koşulu, URL'nin `/static` ile başlayıp başlamadığını kontrol eder. Bunun, bu makalenin ilerisindeki diğer koşullarla birlikte nasıl çalıştığını göreceksiniz.

İkinci form **anonim** veya satır içi ACL'dir:

```
use_backend be_static if { path -i -m beg /static }
```

Bu, yukarıdaki iki satırın yaptığı ile aynı şeyi yapar, sadece tek satırda. Sıralı ACL'ler için durum süslü parantezlerin içinde bulunur.

Her iki durumda da, birden çok koşulu birlikte kullanabilirsiniz. Aralarında hiçbir şey olmadan birbiri ardına listelenen ACL'lerin bir **ve** (&&) ile birleştirildiği kabul edilecektir. Genel durum yalnızca her iki ACL de doğruysa geçerlidir.

```
http-request deny if { path -i -m beg /api } { src 10.0.0.0/16 }
```

Bu, `10.0.0.0/16` alt ağındaki herhangi bir istemcinin `/api` ile başlayan herhangi bir şeye erişmesini engeller.&#x20;

Ünlem işareti eklemek bir koşulu tersine çevirir:

```
http-request deny if { path -i -m beg /api } !{ src 10.0.0.0/16 }
```

Artık yalnızca `10.0.0.0/16` alt ağındaki istemcilerin `/api` ile başlayan yollara erişmesine izin verilirken, diğerlerinin tümü yasaklanacaktır.&#x20;

IP adresleri bir dosyadan da içe aktarılabilir:

```
http-request deny if { path -i -m beg /api } { src -f /etc/haproxy/blacklist.acl }
```

Daha sonra `blacklist.acl` içinde engellemek için [CIDR](https://tr.wikipedia.org/wiki/S%C4%B1n%C4%B1fs%C4%B1z_alanlar_aras%C4%B1_y%C3%B6nlendirme) gösterimini kullanarak tek tek veya bir dizi IP adresini listeleyebilirsiniz:

{% code title="blacklist.acl" %}

```
192.168.122.3
192.168.122.0/24
```

{% endcode %}

`||` (veya) kullanarak her iki koşulun da geçerli olabileceği bir ACL tanımlayabilirsiniz.

```
http-request deny if { path -i -m beg /evil } || { path -i -m end /evil }
```

Bununla, adresi `/evil`  başlayan veya `/evil` biten her istek reddedilecektir.&#x20;

Adlandırılmış ACL'leri birleştirmek için de aynısını yapabilirsiniz:

```
acl starts_evil path -i -m beg /evil
acl ends_evil path -i -m end /evil
http-request deny if starts_evil || ends_evil
```

Adlandırılmış ACL'lerde, aynı ACL adını birden çok kez belirtmek koşulların mantıksal bir `||` (veya) neden olur, bu nedenle son blok da şu şekilde ifade edilebilir:

```
acl evil path_beg /evil
acl evil path_end /evil
http-request deny if evil
```

Bu, daha karmaşık koşullar oluşturmak için AND'leri ve OR'ları (ayrıca adlandırılmış ve satır içi ACL'leri) birleştirmenize olanak tanır, örneğin:

```
http-request deny if evil !{ src 10.0.0.0/16 }
```

Bu, adres `/evil` ile başlıyor veya bitiyorsa, yalnızca `10.0.0.0/16` alt ağında olmayan istemciler için isteği engeller.
