如何为我的 Couchapp 配置 Apache 代理?

Posted

技术标签:

【中文标题】如何为我的 Couchapp 配置 Apache 代理?【英文标题】:How do I configure a Apache proxy for my Couchapp? 【发布时间】:2012-06-14 11:34:07 【问题描述】:

我想在 Ubuntu 10.04.1 上通过 Apache Webserver 2.2.14 实现代理。对于 Couchdb 1.0.1 上的 Couchapp,我对此没有经验。代理还应该重定向到另一个 couchdb-database 和 Apaches www-path 中的一些其他路径。目标是调用 sub.something.de 上的 Couchapp (index.html)。

我的问题是:

    它有效,但有更聪明的方法吗?我自己的方式看起来像是一种解决方法。 一个问题是,当我使用 couchdb-api 注销时,我得到另一个对话框来从 Apache 登录。登录后,我可以注销;)问题是,我要求注销的 uri 看起来像 _:_@sub.something.de,这与我的代理配置不匹配。解决方案是什么?

这是我的 httpd.conf 配置:

<VirtualHost *:80>
 DocumentRoot "/var/www/Something"
 ServerName something
 ServerAlias sub.something.de

 AllowEncodedSlashes On
 ProxyRequests Off
 ProxyPreserveHost Off
 ProxyVia On
 KeepAlive Off

 <Proxy *>
  AuthType Basic
  AuthName "Something Login"
  AuthUserFile /home/user/.couchdb_htpasswd
  Require valid-user

  Order deny,allow     
  Deny from all
  Allow from 127.0.0.1
  Satisfy Any
 </Proxy>   

 ProxyPass /something_data http://localhost:5984/something_data/ nocanon
 ProxyPass /data http://localhost:5984/something/_design/prototype/data nocanon
 ProxyPass /css http://localhost:5984/something/_design/prototype/css nocanon
 ProxyPass /vendor http://localhost:5984/something/_design/prototype/vendor nocanon
 ProxyPass /js http://localhost:5984/something/_design/prototype/js nocanon
 ProxyPass /font http://localhost:5984/something/_design/prototype/font nocanon
 ProxyPass /php http://localhost/dev/something/php nocanon
 ProxyPass /uploads http://localhost/dev/something/uploads nocanon
 ProxyPass /_uuids http://localhost:5984/_uuids nocanon
 ProxyPass /_session http://localhost:5984/_session nocanon
 ProxyPass /_users http://localhost:5984/_users nocanon

 ProxyPass /_users !
 ProxyPass /_uuids !
 ProxyPass /_session !
 ProxyPass /php !
 ProxyPass /uploads !
 ProxyPass /font !
 ProxyPass /data !
 ProxyPass /css !
 ProxyPass /vendor !
 ProxyPass /js !
 ProxyPass /something_data !

 ProxyPass /  http://localhost:5984/something/_design/prototype/index.html nocanon
 ProxyPassReverse / http://localhost:5984/something/_design/prototype/
 RequestHeader unset Authorization

 ErrorLog "/home/user/logs/couchdb_error_log"
 CustomLog "/home/user/logs/couchdb_access_log" common
</VirtualHost>

谢谢

【问题讨论】:

【参考方案1】:

在couch.js中设置urlPrefix的值

#vi /etc/httpd/conf/httpd.conf
ProxyPass /_db/  http://localhost:5984/
ProxyPassReverse /_db/ http://localhost:5984/


#vi  /usr/share/couchdb/www/script/couch.js
CouchDB.urlPrefix = '/_db/';

【讨论】:

以上是关于如何为我的 Couchapp 配置 Apache 代理?的主要内容,如果未能解决你的问题,请参考以下文章

如何限制 CouchApp 对 CouchDB 的 `_user` 表的访问?

如何为开发环境配置 vhosts/apache 子域?

如何为 GET 请求正确配置 Apache 重写规则?

apache_conf 如何为OSX配置Cocktail

如何为本地机器中的多个虚拟主机配置 linux/apache

如何为 Apache Shiro 过多的登录尝试失败配置阈值?