Я пытаюсь настроить обратный прокси-сервер для CouchDB с помощью Apache на экземпляре Ubuntu Server 12.04. Я обращаюсь к CouchDB напрямую через порт 5984, но отсутствие сжатия ответов приводит к чрезмерному использованию сети, а обратный прокси позволяет мне включить сжатие 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>
На этом этапе я могу получить доступ к CouchDB через обратный прокси-сервер, используя curl, например
curl -X GET http://MY_SERVER_ADDRESS/couch/_all_dbs
и каждый раз получаю успешные ответы.
Однако основным клиентом этого прокси-сервера является устройство iOS, и всякий раз, когда я запускаю тот же запрос с помощью NSURLConnection
, я получаю 502 Bad Gateway
ошибку. С этим ответом:
Ошибка прокси
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /couch/DATABASE_NAME/_changes.Reason: DNS lookup failure for: MY_SERVER_ADDRESS
Apache/2.2.22 (Ubuntu) Server at MY_SERVER_ADDRESS Port 80
Я зашел так далеко, что скопировал и вставил точный URL-адрес и поля заголовка из NSURLRequest
в запрос curl, но я не могу воспроизвести ошибку в терминале. Я также пробовал изменять значения тайм-аута в файле конфигурации, но это не имеет значения.
N.B. Это происходит как на устройстве iOS в локальной сети, так и в симуляторе iOS, работающем на том же компьютере, что и сервер (сервер - это виртуальная машина, работающая внутри Virtual Box).