起因是有粉丝加我好友询问关于建站无法访问的问题,检查之后发现是端口的问题,虽然以前建站文章写的已经比较详细了,多篇文章里都只言片语提到过端口,但没详细说过,所以抽空就解释下端口。
众知建站三要素:域名、空间、程序。
空间就相当于一个房间,用来存放程序。当我们开通服务器后都会有一个固定的ip,通过这个IP地址即可访问我们存放在空间的程序。但是,一串串数字不容易被记忆,于是就有了域名的存在,通过ip绑定域名后,即可通过记忆性更强的域名访问网站。就算换了空间,只要域名还在,就可再次访问到网站。
而空间,就相当于一个房间,这个房间有(2^16)个门,通过不同的门来传送不同的数据。
而这个门,就是端口,英文port,是设备与外界通讯交流的出口。
如上图,ip地址样式,后面的:80即为端口。
而不同的端口有着不同的作用,80端口是HTTP传输信息的协议端口。 正常性况下80端口自动隐藏,也就是说,当我们访问一些http网站时,其实域名后缀都有:80。只不过这个端口不需要输入而已。
以阿里云服务器为类,当我们新建一个服务器时,后台只有三个默认的端口
3389:远程服务器端口。
22:ssh(安全外壳协议)端口。
-1:java.net.URL.getPort()规定,若URL的实例未申明(省略)端口号,则返回值为-1(具体是啥这个我也不是很清楚,网上找的解释)。
只是这几个端口,程序上传后当然无法访问,所以,我们还需要手动添加端口。
80:用于HTTP服务提供访问功能。443:用于HTTPS服务提供访问功能。也就是说,如果你的网站只是通过HTTP访问,只需添加80端口即可。如果网站添加了SSL证书,通过HTTPS访问,就需要添加443端口。
一般来说,添加上面两个端口就够了,但根据网站不同程序还有其他端口需要添加。如:宝塔端口
888:宝塔phpmyadmin端口。8888:宝塔服务器后台端口。如果未使用宝塔,可以不添加此端口。
其他还有,如:
21:FTP服务所开放的端口,用于上传、下载文件。23:Telnet 端口,用于 Telnet 远程登录服务器。25:SMTP服务所开放的端口,用于发送邮件。3306:MySQL数据库对外提供服务的端口。有人会说,端口设置这么麻烦,为什么不能全部开放。就像前面的比喻,每个端口都像一扇门,多开一扇门就多一道被入侵的风险。向我这种小站,如果只是来盗取些数据还没什么,毕竟没开放注册,也没用户信息之类的。最麻烦的是被植入病毒,尤其是一些篡改类的木马,将你的网站篡改到一些黄赌毒的站点上,如果不及时处理,作为管理者,小心被网警约谈。一般来说,就上面这些端口,也没必要全部开放,还是要看实际需求。