【问题标题】:Apache is reporting 502 bad gateway on reverse proxy to CouchDBApache 向 CouchDB 报告反向代理上的 502 bad gateway
【发布时间】:2013-10-01 01:44:11
【问题描述】:

我正在尝试在 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 中的 exact URL 和标头字段复制并粘贴到 curl 请求中,但我无法在终端中复制错误。我也在配置文件中尝试过changing timeout values,但没有任何区别。

注意这既发生在本地网络上的 iOS 设备上,也发生在与服务器运行在同一台机器上的 iOS 模拟器中(服务器是在 Virtual Box 中运行的虚拟机)。

【问题讨论】:

    标签: ios apache couchdb nsurlconnection reverse-proxy


    【解决方案1】:

    通常,我在发布问题后几乎立即找到答案。

    解决这个问题的方法是从NSURLRequest 传递一个Host 标头和服务器地址的值。例如:

    Host: 10.0.0.1
    

    NSURLRequest

    [request addValue:[url host] forHTTPHeaderField:@"Host"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-29
      • 2018-04-15
      • 2020-10-24
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2021-05-07
      相关资源
      最近更新 更多