昨天发生了一件很乌龙的事情,也不是很高深的原理,但是还是很好玩~
故事背景:
一个哥们(非技术)说他手头有一台某某云的主机,不知道怎么用,跑过来问我,说让我给他搭个能跑php的环境,我原以为那很简单,lnmp下载完了自己自动安装就好了,没想太多,于是经过漫长的等待,lnmp成功安装好了,并做了一个简单的nginx配置,看看能不能通过ip直接访问。
然鹅:
通过云服务商提供的弹性ip直接访问不管怎么访问都是访问不同,并且能看出http握手并不成功
这个是怎么回事呢,然后通过ping工具ping这个ip是通的,但用telnet去测试这个ip的80端口时发现仍然无法成功握手,难道是80端口没有开启,或者防火墙?
结果发现80是开启的,关闭防火墙之后,仍然无法访问...那这下只有一个地方:安全组(可能还有其他地方,大佬们可以科普下)没设置,可是当我添加完规则之后,发现结果仍然是一样的,无法访问,这下,我就真没辙了,我不知道我的操作有什么问题,即便是nginx有问题,那也会报nginx的错误,这个连握手都没成功,我作为一个不是专业运维的开放实在是没辙了,只剩最后一招:提工单了,于是提交了工单,写了具体的情况,不到五分钟后,客服人员打电话来了:
“您好,您的云服务器还没有备案,所以80,8080,443这些端口时没法使用的”
“嗯嗯好的,谢谢(Orz我去年买了个表)”
于是,这场闹剧,最终以乌龙的方式结尾,让人哭笑不得,不过既然运营人员说了,我就要猜一下:是所有http请求都无法到达服务器还是只是这几个特定的端口无法使用呢?我灵机一动既然如此,那我就不用你的80端口,我在安全组里开了一个4396的端口(7就完事了),然后在服务器上安装了docker,安装过程中还有点小问题,上一篇文章中做了说明,拉取了nginx镜像,把运行的容器的80映射到本机4396上,打开浏览器一访问,结果:
这就说明云服务商只是限制了常用的网络端口,并没有限制所有请求,不过好玩归好玩,我朝要求备案诸位就老老实实备案好了~~