簡體   English   中英

Apache報告到CouchDB的反向代理上的502錯誤網關

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM