我正在尝试在我的 CentOS 7 服务器上设置一个 CouchDB 2.0 实例。我已经将它安装并作为 systemd 服务运行,当我使用 127.0.0.1 或 0.0.0.0 从服务器访问它时,它会以友好的 hello world 消息进行响应
$ curl 127.0.0.1:5984
{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
$ curl 0.0.0.0:5984
{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
在我的 local.ini 文件中,我将 bind_address 配置为 0.0.0.0
[httpd]
bind_address = 0.0.0.0
我的理解是,如果我有这个绑定地址,我可以从防火墙中打开的任何 IP 地址连接到端口 5984
我正在为我的防火墙使用 firewalld,并且我已将其配置为打开端口 5984 此配置通过列出公共区域的配置来确认:
$ sudo firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: couchdb2 dhcpv6-client http https ssh
ports: 443/tcp 5984/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
我还使用 XML 在 /etc/firewalld/services/couchdb2.xml 创建了一个名为 couchdb2 的服务:
<service>
<short>couchdb2</short>
<description>CouchDB 2.0 Instance</description>
<port protocol="tcp" port="5984"/>
</service>
根据我对 firewalld 的了解,我现在应该能够在 5984 上接收连接
但是当我从笔记本电脑卷曲时,我的连接被拒绝:
$ curl my-server:5984 --verbose
* Rebuilt URL to: my-server:5984/
* Trying <my-ip>...
* connect to <my-ip> port 5984 failed: Connection refused
* Failed to connect to my-server port 5984: Connection refused
* Closing connection 0
当我通过 127.0.0.1 或 0.0.0.0 在本地连接到 couchdb 实例时,我可以在我的 couchdb 日志中看到 200 响应:
$ sudo journalctl -u couchdb2
...
[notice] 2017-06-06T00:35:01.159244Z couchdb@localhost <0.3328.0> 222d655c69 0.0.0.0:5984 127.0.0.1 undefined GET / 200 ok 28
[notice] 2017-06-06T00:37:21.819298Z couchdb@localhost <0.5598.0> 2f8986d14b 127.0.0.1:5984 127.0.0.1 undefined GET / 200 ok 1
但是当我从笔记本电脑上蜷缩起来时,couchdb 日志中没有显示 Connection Refused 错误这向我表明问题可能是防火墙而不是 CouchDB,但我不确定。拒绝连接总是防火墙吗?如果 CouchDB 实例出现问题,我会收到其他错误吗?据我所知,CouchDB 和 firewalld 都配置正确,但它没有像我预期的那样工作。任何帮助都将不胜感激,无论您是否知道问题,或者您是否可以帮助我辨别问题是否与 CouchDB 或 firewalld 有关。