2013-02-19 11 views
7

Ho la necessità di limitare l'accesso a determinati file in base a un parametro stringa di query. Ho un server proxy NGINX che si trova di fronte a molti altri server Web nginx per il bilanciamento del carico. Ho deciso di applicare questo parametro stringa di query a livello del server proxy per consolidare le modifiche alla configurazione. Ciò ha aggiunto un po 'di complessità alla mia installazione perché la richiesta non può essere intrappolata nel if, poiché deve essere inviata a monte.Come riutilizzare le impostazioni del proxy NGINX in più posizioni

server { 
     listen 443; 
     # SSL Settings 

     server_name staging.xxxx.com; 

     location/{ 
       proxy_pass http://webdav-cluster; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
       proxy_set_header X-Real-IP  $remote_addr; 
       proxy_set_header Host   $http_host; 
     } 

     # Unless the correct application token is passed in as a query parameter 
     # then deny access. 
     location ~ \/protected\/.*txt$ { 
       if ($arg_secret != abc) { 
         return 403; 
       } 

       proxy_pass http://webdav-cluster; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
       proxy_set_header X-Real-IP  $remote_addr; 
       proxy_set_header Host   $http_host; 
     } 
} 

C'è un modo per memorizzare quelle 4 linee proxy in una posizione o una variabile e quindi reindirizzare internamente a quella con una linea? Potrei anche usare le stesse impostazioni in diversi host virtuali.

+0

OP, che cosa si finisce per fare? Sono curioso anche di questo. – Mahn

risposta

2

In questo caso si consiglia di utilizzare la direttiva include: http://nginx.org/r/include

+4

Tecnicamente corretto, ma sarebbe bello poterlo fare senza dividerlo in diversi file per piccole cose. – Mahn

+0

Quindi utilizza il tuo motore di template preferito per generare configurazioni. Potrebbe anche essere "bash". – VBart