以下是我遇到的情况:
- 服务器由 laravel forge 管理
- 它在 cloudflare 反向代理后面提供服务
- Nginx 已启动并运行,监听端口 80 和 443(已确认)
现在我需要为该服务器配置一个自定义负载均衡器,并且发生了一件非常奇怪的事情,当我curl
从外部尝试访问该 URL 时,请求成功,访问日志附加到 nginx 日志中,但是当我尝试通过从负载均衡器机器访问它时curl --resolve
,连接在任何事情发生之前关闭(没有标头没有状态,基本上没有响应)。
首先,我以为是防火墙配置问题,因此我ssh
进入应用程序服务器,并尝试curl --resolve xxxx:80:127.0.0.1
通过环回连接访问它,但发生了同样的事情。
然后我尝试使用 https 再次执行相同的操作,但是当客户端尝试启动 TLS 握手时连接关闭。
整个事情看起来就像是环回被阻塞了,这对我来说听起来是不可能的,所以有人知道这个问题是如何发生的吗?
p/s:我确实检查了防火墙,ufw 已启用,但在禁用 ufw 后我得到了相同的结果
在这张图片中,我应该得到 404,而不是根本没有结果
forge@dev-server1:~$ curl -v localhost
* Trying 127.0.0.1:80...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> Host: localhost
> User-Agent: curl/7.68.0
> Accept: */*
>
* Empty reply from server
* Connection #0 to host localhost left intact
curl: (52) Empty reply from server
forge@dev-server1:~$
更新
根据评论的建议,我运行nginx -T
然后这是输出
p/s: 这是我之前提到的 https 测试
forge@dev-server1:~$ curl --resolve member.domain.hide:443:127.0.0.1 https://member.domain.hide -v
* Added member.domain.hide:443:127.0.0.1 to DNS cache
* Hostname member.domain.hide was found in DNS cache
* Trying 127.0.0.1:443...
* TCP_NODELAY set
* Connected to member.domain.hide (127.0.0.1) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* OpenSSL SSL_connect: Connection reset by peer in connection to member.domain.hide:443
* Closing connection 0
curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to member.domain.hide:443
forge@dev-server1:~$