我正在考虑一个广泛使用CouchDB的Web应用程序,以便尽可能地使用本机erlang HTTP API获得巨大收益。
您可以将Apache配置为反向代理,以允许将外部GET直接代理到CouchDB,而将PUT / POST发送到应用程序内部逻辑(用于卫生,身份验证......)?或者这是不明智的 - CouchDB内置的身份验证选项对Web App来说似乎有点弱。
由于
答案 0 :(得分:4)
您可以使用mod_rewrite
根据HTTP方法有选择地代理请求。
例如:
# Send all GET and HEAD requests to CouchDB
RewriteCond %{REQUEST_METHOD} GET|HEAD
RewriteRule /db/(.*) http://localhost:5984/mydb/_design/myapp/$1 [P]
# Correct all outgoing Location headers
ProxyPassReverse /db/ http://localhost:5984/mydb/_design/myapp/
任何POST
,PUT
或DELETE
请求都会像往常一样由Apache处理,因此您可以按照常规方式连接应用程序层。
答案 1 :(得分:1)
你的问题是老化而没有答案,所以我会加上这个“几乎回答”。
Nginx肯定可以根据请求进行不同的重定向。
这是,如果你准备将nginx作为revproxy放在前面,并将apache和couchdb作为后端。
答案 2 :(得分:1)
你看到了吗? OAuth和cookie身份验证在4日签入:
http://github.com/halorgium/couchdb/commit/335af7d2a9ce986f0fafa4ddac7fc1a9d43a8678
此外,如果您对使用Erlang作为服务器语言感兴趣,可以通过webmachine代理couchdb:
http://blog.beerriot.com/2009/05/18/couchdb-proxy-webmachine-resource/
答案 3 :(得分:-1)
我会考虑使用Apache mod_proxy的反向代理功能。创建虚拟主机配置,将Web服务器的某些HTTP请求转发到CouchDB。您可以设置应转发哪些URI路径的规则等。
请参阅本指南获取灵感:http://macgyverdev.blogspot.se/2014/02/apache-web-server-as-reverse-proxy-and.html