2013-02-19 10 views
7

Ich muss den Zugriff auf bestimmte Dateien basierend auf einem Abfragezeichenfolgenparameter beschränken. Ich habe einen NGINX-Proxy-Server, der zum Lastenausgleich vor mehreren anderen nginx-Webservern steht. Ich habe beschlossen, diesen Parameter für die Abfragezeichenfolge auf Proxyserverebene zu erzwingen, um die Konfigurationsänderungen zu konsolidieren. Dies hat meinem Setup ein wenig Komplexität hinzugefügt, da die Anfrage nicht in der if-Datei gefangen werden kann, da sie stromaufwärts gesendet werden muss.Wie NGINX Proxy-Einstellungen an mehreren Orten wieder verwendet werden können

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; 
     } 
} 

Gibt es eine Möglichkeit, diese 4-Proxy-Linien in einem Ort oder Variablen zu speichern und dann mit einer Zeile, dass intern umleiten? Ich kann auch die gleichen Einstellungen in verschiedenen virtuellen Hosts verwenden.

+0

OP, was hast du am Ende tun? Ich bin auch neugierig auf diesen. – Mahn

Antwort

2

In diesem Fall sollten Sie die include Direktive verwenden: http://nginx.org/r/include

+4

Technisch korrekt, aber es wäre schön, wenn man es für kleine Dinge in mehrere Dateien aufteilen könnte. – Mahn

+0

Verwenden Sie dann Ihre bevorzugte Vorlagen-Engine zum Generieren von Konfigurationen. Es könnte auch 'bash' sein. – VBart