2010-01-27 61 views
7

所以我有一个使用CouchDB作为后端的应用程序。 Couch并没有真正拥有它的安全/用户模型,并且默认情况下,任何人都可以执行任何操作(包括删除记录甚至整个数据库)。但是,如果我们只限于GET请求,我们会更安全。nginx作为反向代理来限制http动词访问

我希望我可以把nginx作为一个反向代理,但我找不到一个选项,可以让你根据动词进来过滤请求.Pound这样做,所以我正在考虑去那条路线,但我们已经广泛地使用了nginx,不必在混合中添加其他技术。任何人都知道是否有一个选项可以让这种情况发生?

我甚至可以解决Apache中的mod_proxy选项。有任何想法吗?

回答

8

您可以从$request_method变量中访问HTTP请求类型。因此:

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

甜,感谢伙计! – 2010-02-18 22:10:03

14

请尝试使用limit_except指令代替。最好避免使用if,因为if is evil

limit_except GET { 
    deny all; 
} 

Reference