概述
今天我在 AWS EC2 上配置並啟動了 nginx,但是通過外網不能訪問,查了一下資料終於解決了,記錄下來供以后開發時參考,相信對其它人也有用。
外網訪問不了的原因
外網訪問不了的原因不外乎有 2 個:
- 防火牆
- 安全組
防火牆
linux 上的防火牆就是 firewall 了,可以用下面的任意一種方式查看是否開啟了防火牆:
firewall-cmd --state
systemctl status firewalld
status iptables.service
這里 firewall 的相關知識我沒有深入學習,就略過了~
安全組
像阿里雲、亞馬遜的 linux 實例里面都設置有安全組。安全組起着虛擬防火牆的作用,可控制一個或多個實例的流量。安全組的設置在阿里雲或亞馬遜的后台里面設置。
比如說我的 AWS EC2 在外網不能訪問,就是因為安全組沒有對外開啟 80 端口。所以只需要在 AWS EC2 后台的安全組里面設置如下規則即可:
類型:http
協議:TCP
端口范圍:80
來源:0.0.0.0/0, ::/0
類型:https
協議:TCP
端口范圍:433
來源:0.0.0.0/0, ::/0
注意:由於沒有配置 ICMP 規則,所以外網可以訪問,但是 ping 不通~~
其它
我們知道,http 的默認端口是 80;https 的默認端口是 433
還有,ssh 的默認端口是 22;telnet 的默認端口是 23;ftp 的默認端口是 20 和 21,其中 20 負責連接,21 負責傳輸數據。