2014-12-08 9 views
7

C'è una direttiva molto utile in nginx map.direttiva map nginx: perché è consentita solo a livello http?

Ma è possibile utilizzarlo solo sul livello http (vedere i documenti qui http://nginx.org/en/docs/http/ngx_http_map_module.html#map).

Ad esempio, ho definito un server e vorrei utilizzare alcuni reindirizzamenti condizionali in questo server utilizzando la variabile $url. Sarebbe molto utile usare questa direttiva all'interno di server ma non è possibile. Perché?

Sì posso farlo anche sul piano http ma ci possono essere diverse server s definite a livello http e vorrei mantenere queste condizioni all'interno server sezione sono definiti per.

risposta

0

L'ambito in cui è possibile utilizzare map è fissato nel codice sorgente di nginx. Di seguito è parte del codice da ngx_http_map_module.c. È possibile vedere map può essere utilizzato solo in NGX_HTTP_MAIN_CONF che significa solo livello http.

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

Grazie) Sai perché è come è ora? – chestozo

+0

@chestozo Bene, non ho letto quella parte di codice, quindi non lo faccio – D3Hunter

+0

Dire che il software non lo consente è ovvio. Chiedere "perché" sta chiedendo quale fosse il ragionamento per quella scelta. – Heliodor

Problemi correlati