CouchDB {ошибка, req_timedout}

Почему-то я не могу запустить репликацию моей локальной Couchdb с удаленным сервером... Я всегда вижу в журналах:

[error] [<0.5607.0>] Replicator, request GET to "http://admin:*****@mydomain.com/couchdb/apps/_changes?feed=continuous&style=all_docs&since=12&heartbeat=10000" failed due to error {error,req_timedout}
[info] [<0.5607.0>] Retrying _changes request to source database http://admin:*****@mydomain.com/couchdb/apps/ with since=12 in 2.0 seconds

Но когда я запрашиваю в своем браузере URL-адрес (без непрерывного параметра)

http://admin:*****@mydomain.com/couchdb/apps/_changes?style=all_docs&since=12&heartbeat=10000

Я могу подключиться без проблем... Если я установлю тайм-аут выше (например, 90 секунд), это ничего не изменит.. Раньше я пробовал это через HTTPS, и это не сработало, поэтому я попробовал сейчас с HTTP.. В браузере хорошо, в локальной CouchDB не работает .. :(

Мой документ репликации выглядит так:

{
   "_id": "ab0c55f3a60057835c079f58360042de",
   "_rev": "2-34cd32e7cada589095a1868bc54e5fce",
   "source": "http://admin:[email protected]/couchdb/apps",
   "target": "apps",
   "connection_timeout": 30000,
   "continuous": true,
   "owner": "admin",
   "_replication_state": "triggered",
   "_replication_state_time": "2014-08-02T19:43:50+02:00",
   "_replication_id": "06beb828bd5b9d4a78bfc3e049b0bb9c"
}

И это показывает, что репликатор работает в консоли состояния, но в журнале я получаю сообщение об ошибке выше. Может у вас есть подсказка?


person BvuRVKyUVlViVIc7    schedule 02.08.2014    source источник


Ответы (1)


Черт.. Я забыл включить для отключения буферизации в nginx:

См. http://wiki.apache.org/couchdb/Nginx_As_a_Reverse_Proxy.

Непрерывная репликация через nginx

Приведенная выше конфигурация нарушит непрерывную репликацию. Добавив следующий фрагмент, репликация снова заработает:

 location ~ ^/(.*)/_changes {
     proxy_pass http://localhost:5984;
     proxy_redirect off;
     **proxy_buffering off;**
     proxy_set_header Host $host;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }

Но потом я получил еще одну ошибку: несанкционированный доступ..

Поэтому мне пришлось добавить следующее в мой документ репликации, и тогда это сработало:

"create_target":true,
"user_ctx": {
    "roles": ["_admin"]
}
person BvuRVKyUVlViVIc7    schedule 02.08.2014