[英]Apache is reporting 502 bad gateway on reverse proxy to CouchDB
我正在嘗試在Ubuntu Server 12.04實例上使用Apache為CouchDB設置反向代理。 我一直通過端口5984直接訪問CouchDB,但是響應缺少壓縮導致過多的網絡使用,而反向代理使我能夠啟用gzip壓縮。
到目前為止,我已經將站點的配置文件設置為:
# /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請求中,但是我無法在終端中復制錯誤。 我也嘗試過更改配置文件中的超時值 ,但這沒什么區別。
注意:這會在局域網上的iOS設備上以及與服務器在同一台計算機上運行的iOS模擬器中發生(服務器是在Virtual Box內運行的虛擬機)。
通常,發布問題后,我幾乎會立即找到答案。
解決方案是從NSURLRequest
傳遞一個帶有服務器地址值的Host
標頭。 例如:
Host: 10.0.0.1
或NSURLRequest
:
[request addValue:[url host] forHTTPHeaderField:@"Host"];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.