2014-12-08 10 views
7

nginx map'da çok yararlı bir yönerge vardır.nginx harita direktifi: Neden sadece http düzeyinde izin verilir?

Ancak, yalnızca http seviyesinde kullanmak mümkündür (bkz. Belge burada http://nginx.org/en/docs/http/ngx_http_map_module.html#map).

Örneğin, bir server tanımladım ve $url değişkenini kullanarak bu sunucudaki bazı koşullu yönlendirmeleri kullanmak istiyorum. Bu yönergenin server içinde kullanılması çok kullanışlı olacaktır, ancak bu mümkün değildir. Neden?

Evet http düzeyde de yapabiliriz ama orada http düzeyde tanımlanmış farklı server ler olabilir ve onlar için tanımlanan server bölümün içinde bu koşulları tutmak istiyorum.

cevap

0

map'un kullanılabildiği kapsam nginx kaynak koduna sabitlenmiştir. Aşağıda, ngx_http_map_module.c adresindeki kodun bir parçasıdır. Görebildiğiniz gibi map sadece NGX_HTTP_MAIN_CONF'da kullanılabilir, yani sadece http seviyesi anlamına gelir.

static ngx_command_t ngx_http_map_commands[] = {                          

    { ngx_string("map"),                                
     NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_TAKE2,                         
     ngx_http_map_block,                                
     NGX_HTTP_MAIN_CONF_OFFSET,                              
     0,                                    
     NULL }, 
+1

Teşekkür ederim) Şimdi neden böyle olduğunu biliyor musunuz? – chestozo

+0

@chestozo Eh, kodun bir kısmını okumadım, bu yüzden ben – D3Hunter

+0

yazmayın Yazılımın açık olduğunu belirtmesine izin vermiyor. “Neden” diye sormak, o seçimin akıl yürütmesinin ne olduğunu soruyor. – Heliodor

İlgili konular