我正在尝试设置pouchDB同步,但是我无法远程连接到couchDB ...我已经跟着these instructions from couchDB安装在我的ubunto服务器上 - 这是用laravel forge管理的......虽然这个项目本身没有使用laravel(只是一个常规的html文件)
所有内容都已正确安装,包含所有预期的响应
如果我跑:curl localhost:5984
我得到:{"couchdb":"Welcome","uuid":"*******************","version":"1.6.1","vendor":{"version":"14.04","name":"Ubuntu"}}
我跑了:npm install -g add-cors-to-couchdb
和add-cors-to-couchdb
我没有得到任何跨源错误
但如果我尝试去http://178.xx.xxx.xxx:5984/_utils,它就会挂起来?
使用以下代码时:
var localdb = new PouchDB('messages');
var remotedb = new PouchDB('http://178.xx.xx.xx:5984/messages');
localdb.sync(remotedb, {live: true});
我明白了:
Unhandled promise rejection
Promise
{
[[PromiseStatus]]: "rejected",
[[PromiseValue]]: o
}
__proto__: Promise
[[PromiseStatus]]: "rejected"
[[PromiseValue]]: o
error: true
message: "Database encountered an unknown error"
name: "unknown_error"
status: 500
(取自铬)
为什么我收到此错误的任何想法?这似乎是超时.....任何想法为什么会这样做?
如果我使用:ssh -L5984:127.0.0.1:5984 forge@178.xx.xx.xx
然后转到http://localhost:5984/_utils/
它工作正常
同样用http://localhost:5984/messages
替换远程地址也会使同步工作
使用此功能时,我还使用“验证安装”检查了所有内容是否已正确安装,并返回“您的安装看起来很好。放松时间。”
奇怪!
所有人都有任何想法,为什么我无法远程连接到couchDB?
非常感谢任何帮助!
谢谢, 戴夫
答案 0 :(得分:3)
听起来您需要修改CouchDB的local.ini
文件,以允许从更多IP访问,而不仅仅是localhost。
检查您的local.ini
以了解此部分:
[httpd]
;port = 5984
;bind_address = 127.0.0.1
将其更改为:
[httpd]
;port = 5984
bind_address = 0.0.0.0
编辑:更简单的解决方案是设置Nginx / Apache代理以将http://example.com/couchdb路由到localhost:5984。这是我使用的Nginx配置:
location /couchdb {
rewrite /couchdb(.*) $1 break;
proxy_pass http://127.0.0.1:5984;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}