我在使用 firewalld 的 centos 7 上。
我已经配置了 firewalld,所以 443 是打开的:
$ sudo firewall-cmd --zone=public --permanent --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: couchdb2 dhcpv6-client http https ssh
ports: 443/tcp 5984/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
$ sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
Warning: ALREADY_ENABLED: 443:tcp
success
Run Code Online (Sandbox Code Playgroud)
显然端口 443 是开放的,但是......
$ curl https://127.0.0.1:443
curl: (7) Failed connect to 127.0.0.1:443; Connection refused
Run Code Online (Sandbox Code Playgroud)
我还使用http://www.yougetsignal.com/tools/open-ports/ 上的网络工具对其进行了测试
我输入我的 IP 地址和端口 443 并得到: Closed Port 443 is closed on {my-ip}
可能出什么问题了?它似乎打开了,但事实并非如此。
我用这个结果查询 netstat:
$ sudo netstat -lnp | grep 443
udp 0 0 127.0.0.1:323 0.0.0.0:*
443/chronyd
udp6 0 0 ::1:323 :::*
443/chronyd
Run Code Online (Sandbox Code Playgroud)
一旦我修复了我的 nginx.conf 以正确收听 443,结果看起来像:
$ sudo netstat -lnp | grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:*
LISTEN 10197/nginx: master
tcp6 0 0 :::443 :::*
LISTEN 10197/nginx: master
udp 0 0 127.0.0.1:323 0.0.0.0:*
443/chronyd
udp6 0 0 ::1:323 :::*
443/chronyd
Run Code Online (Sandbox Code Playgroud)
连接被拒绝的错误通常意味着防火墙允许数据包通过(除非防火墙主动拒绝连接尝试),但没有服务侦听目标端口号。
在您的情况下,您需要确保 HTTPs Web 服务器正在运行并侦听端口 443。您可以使用以下命令进行验证。
sudo netstat -lnp | grep 443
Run Code Online (Sandbox Code Playgroud)
编辑:正如@Paul 所评论的,显示的输出意味着没有进程侦听端口 443。输出无关紧要,因为进程 ID 匹配 443,我们需要它与 TCP 协议的端口号匹配。您需要找到类似于以下内容的行:
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN <pid>/<proc_name>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21350 次 |
最近记录: |