Репликация CouchDB не работает должным образом через прокси

Примечание: Сделаны некоторые обновления на основе новой информации. Старые идеи были добавлены в виде комментариев ниже. Примечание: Сделаны некоторые обновления (снова) ) на основе новой информации. Старые идеи были добавлены в качестве комментариев ниже (снова).

Мы запускаем два экземпляра CouchDB на разных компьютерах за обратными прокси-серверами Apache. При попытке репликации между двумя экземплярами:

curl -X POST http://user:pass@localhost/couchdb/_replicate -d '{ "source": "db1", "target": "http://user:pass@10.1.100.59/couchdb/db1" }' --header "Content-Type: application/json"

(мы начал использовать curl для отладки проблемы)

мы получаем ошибку, похожую на:

{"error":"case_clause","reason":"{error,\n    {{bad_return_value,\n         {invalid_json,\n             <<\"<!DOCTYPE HTML PUBLIC \\\"-//IETF//DTD HTML 2.0//EN\\\">\\n<html><head>\\n<title>404 Not Found</title>\\n</head><body>\\n<h1>Not Found</h1>\\n<p>The requested URL /couchdb/db1/_local/01e935dcd2193b87af34c9b449ae2e20 was not found on this server.</p>\\n<hr>\\n<address>Apache/2.2.3 (Red Hat) Server at 10.1.100.59 Port 80</address>\\n</body></html>\\n\">>}},\n     {child,undefined,\"01e935dcd2193b87af34c9b449ae2e20\",\n         {gen_server,start_link,\n             [couch_rep,\n              [\"01e935dcd2193b87af34c9b449ae2e20\",\n               {[{<<\"source\">>,<<\"db1\">>},\n                 {<<\"target\">>,\n                  <<\"http://user:pass@10.1.100.59/couchdb/db1\">>}]},\n               {user_ctx,<<\"user\">>,\n                   [<<\"_admin\">>],\n                   <<\"{couch_httpd_auth, default_authentication_handler}\">>}],\n              []]},\n         temporary,1,worker,\n         [couch_rep]}}}"}

Итак, после дальнейшего исследования выяснилось, что apache возвращает эту ошибку, не пытаясь получить доступ к CouchDB (согласно файлам журнала). следующий URL

/couchdb/db1/_local/01e935dcd2193b87af34c9b449ae2e20

Apache передает запрос CouchDB и возвращает ошибку 404 CouchDB. С другой стороны, когда происходит репликация, фактически передается URL-адрес

/couchdb/db1/_local%2F01e935dcd2193b87af34c9b449ae2e20

, который apache определяет как отсутствующий документ и возвращает свою собственную ошибку 404 для без передачи запроса в CouchDB. Это, по крайней мере, дает мне несколько новых зацепок, но я все равно мог бы воспользоваться помощью, если бы у кого-нибудь был ответ на этот вопрос.

6
задан Wesley 9 March 2011 в 17:10
поделиться