Nano Hash - криптовалюты, майнинг, программирование

Apache сообщает о 502 плохом шлюзе на обратном прокси-сервере в CouchDB

Я пытаюсь настроить обратный прокси-сервер для 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).


Ответы:


1

Как обычно, я нахожу ответ почти сразу после публикации вопроса.

Решением является передача заголовка Host из NSURLRequest со значением адреса сервера. Например:

Host: 10.0.0.1

или для NSURLRequest:

[request addValue:[url host] forHTTPHeaderField:@"Host"];
25.09.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..