我正尝试在Ubuntu Server 12.04的实例上使用Apache设置对CouchDB的反向代理。我一直通过端口5984直接访问CouchDB,但响应缺乏压缩导致网络使用率过高,反向代理允许我启用gzip压缩。Apache正在向CouchDB报告502反向代理上的错误网关
到目前为止,我已经设置的配置文件为我的网站像这样:
# /etc/apache2/sites-available/SITE_NAME
<VirtualHost *:80>
ServerAdmin *****
ServerName *****
ServerAlias *****
RewriteEngine On
RewriteOptions Inherit
RewriteRule ^/couch/(.*) http://%{HTTP_HOST}:5984/$1 [P]
ProxyPass /couch/ http://localhost:5984/ nocanon
ProxyPassReverse /couch/ http://localhost:5984/
DocumentRoot /var/www/*****/current/public
<Directory /var/www/*****/current/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
在这一点上,我可以使用curl通过反向代理访问的CouchDB,例如
curl -X GET http://MY_SERVER_ADDRESS/couch/_all_dbs
我每次都收到成功的回复。
但是,此代理的主要客户端是iOS设备,并且每当我使用NSURLConnection
运行相同的请求时,我都会收到502 Bad Gateway
错误。与此响应:
代理错误
代理服务器接收到来自上游服务器的无效响应。
代理服务器无法处理请求GET /couch/DATABASE_NAME/_ changes。原因:DNS查找失败的:MY_SERVER_ADDRESS
的Apache/2.2.22(Ubuntu的)在MY_SERVER_ADDRESS端口服务器80
到目前为止,我已经走了,以复制和粘贴确切从NSURLRequest
URL和头字段到一个curl请求,但我不能在终端复制错误。我也在配置文件中试过changing timeout values,但没有区别。
N.B.这发生在本地网络上的iOS设备上以及运行在与服务器相同的机器上的iOS模拟器中(服务器是运行在Virtual Box内的虚拟机)。