我有一台具有公共 IP 地址的远程计算机121.x.y.z
,安装了 Gitlab(软件并不重要,这里不需要 Gitlab 知识)(使用 nginx 作为其 Web 界面)并设置了 HTTPS。但是我的情况是,我只能使用 localhost 通过 HTTPS 进行访问,而不能使用其他 IP 地址。
当我netstat -an | grep 443
在远程机器上执行此操作时,我得到了
[user@machine ~]$ netstat -an | grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
当我curl --insecure https://127.0.0.1
在远程机器上执行此操作时,我得到了
[user@machine ~]$ curl --insecure https://127.0.0.1
<html><body>You are being <a href="https://127.0.0.1/users/sign_in">redirected</a>.</body></html>
重定向的消息是Gitlab默认的正确消息。
但是当我curl --insecure https://121.x.y.z
在远程机器上执行此操作时,除了无限的等待时间之外什么也没得到(似乎它实际上并没有在监听)。但 netstat 结果似乎表明它正在监听所有 ip 地址,而不仅仅是本地主机。
如果我放弃 HTTPS 设置并返回 HTTP,Gitlab Web 界面即可正常工作。
我甚至不知道如何继续调试这个问题,几乎陷入了困境。我能做些什么来弄清楚为什么它只监听 localhost,而 netstat 显示它监听所有内容?
编辑:系统是 CentOS7,并且firewalld 似乎也没有激活。
[user@machine ~]$ sudo systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
Aug 14 10:55:45 xxxxxx systemd[1]: firewalld.service: Unit cannot be reloaded because it is inactive.