2010-01-27 13 views
7

So habe ich eine App, die CouchDB als Backend verwendet. Couch hat sein Sicherheits/Benutzer-Modell noch nicht wirklich, und standardmäßig kann jeder etwas tun (einschließlich Löschen von Datensätzen und sogar der gesamten Datenbank). Aber wenn wir den Zugriff auf GET-Anfragen beschränken, sind wir viel sicherer.Nginx als Reverse-Proxy zu begrenzen HTTP-Verb-Zugriff

Ich hatte gehofft, ich könnte Nginx als Reverse-Proxy aus der Front, aber ich kann keine Option finden, die Sie Anfragen auf der Grundlage des Verbs kommen filtern können. Pound tut dies, so denke ich über diesen Weg gehen , aber wir verwenden nginx bereits ausgiebig und es wäre schön, wenn wir keine weitere Technologie in der Mischung hinzufügen müssten. Wer weiß, ob es eine Option gibt, die dies ermöglicht?

Ich würde sogar mit einer mod_proxy Option in Apache zufrieden sein. Irgendwelche Ideen?

Antwort

8

Sie können über die Variable $request_method auf den HTTP-Anforderungstyp zugreifen. Also:

location/{ 
    if ($request_method = 'GET') { 
    proxy_pass couchdb_backend; 
    } 
} 
+0

Süß, dank dude! –

14

Verwenden Sie stattdessen die limit_except-Direktive. Es ist besser zu vermeiden, if zu verwenden, weil if is evil.

limit_except GET { 
    deny all; 
} 

Reference

Verwandte Themen