我正嘗試在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內的虛擬機)。