Centos7
firewalld 啟用了 443 但它拒絕連接
我在使用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
顯然埠 443 是開放的,但是…
$ curl https://127.0.0.1:443 curl: (7) Failed connect to 127.0.0.1:443; Connection refused
我還使用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
一旦我修復了我的 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
錯誤連接被拒絕通常意味著防火牆允許數據包通過(除非防火牆主動拒絕連接嘗試),但沒有服務在目標埠號上偵聽。
在您的情況下,您需要確保 HTTPS Web 伺服器正在執行並偵聽埠 443。您可以使用以下命令進行驗證。
sudo netstat -lnp | grep 443
**編輯:**正如@Paul 所評論的,顯示的輸出意味著沒有程序在監聽埠 443。輸出是無關緊要的,因為程序 ID 匹配 443,我們需要它與 TCP 協議的埠號匹配。您需要找到類似於以下內容的行:
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN <pid>/<proc_name>