700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 本地Host文件解析域名后访问阿里云服务器 结果请求被拦截 提示备案问题的解决方式

本地Host文件解析域名后访问阿里云服务器 结果请求被拦截 提示备案问题的解决方式

时间:2023-04-07 06:25:34

相关推荐

本地Host文件解析域名后访问阿里云服务器  结果请求被拦截  提示备案问题的解决方式

文章目录

起因查找原因历程明明是通过本地host文件解析域名为ip地址, 为神马服务器还是知道我访问的域名呢最终解决方式

起因

上周腾讯云服务器使用时间到期了, 于是就想再换成阿里云服务器试试.

买了服务器之后, 我的得到了我的云服务器公网ip: 118.xxx.xxx.xxx, 但是我向来是不记ip地址的, 连接云服务器都是使用的域名, 我之前注册过域名, 但早到期了, 现在使用的域名仅仅是在本地host文件里面解析的罢了. 本来想着, 既然换了服务器, 那就就把原来host文件指向的腾讯云的ip地址转成阿里云的服务器ip地址就好了.

在改完host文件配置之后, 经过了mysql, docker, redis, jdk, nginx等各种安装配置之后, nginx代理80端口, 浏览器访问也成功打开页面. 但是第二天再次访问的时候, 发现居然提示我域名要备案.

我擦嘞, 我本地的host文件里的域名备什么案! 只是做本地ip解析用的!

查找原因

在网上查找了原因之后, 发现是访问阿里云服务器的时候, 阿里云服务器的网关会对非授权的访问进行截获。

如果你没有备案,那么针对特定端口,比如80,443的请求进行截获。当你备案后就予以放行。

也就是说, 如果没有备案的话, 使用本地域名访问80,443端口的话是会被拦截的, 但是访问其它端口却问题(例如使用域名访问22, 3306, 6379等端口就可以正常访问), 而且如果使用ip地址的话, 也是可以正常访问的.

历程

80端口和443端口一般也就浏览器访问才会用到的端口, 换句话讲, 拦截了80端口和443端口相当于仅仅拦截了浏览器通过域名对服务器的访问(http, https).

那么岂不是每次浏览器访问只能够输入IP地址了?

可惜本人就是不想记忆ip地址, 虽然chrome浏览器有url记忆功能, 输入个118就能够将把整个ip地址给带出来, 但本人用着就是不爽.

那么就乖乖去申请备案吧, 打开备案页面

卧槽, 还初审, 终审, 管局核检, 重要的是还人脸识别, 奈何本人长的丑, 不想以真面目示人…

尼玛, 阿里云屁事儿怎么这么多, 隔壁腾讯用两年了, 都没这么多事儿, 想让我备案是吧, 我就偏偏不想备! 闲话不多数,先把阿里骂一遍!

明明是通过本地host文件解析域名为ip地址, 为神马服务器还是知道我访问的域名呢

其实从第一开始我输入本地域名, 跳出提示需要备案页面的时候, 我就有这个问题, 我一直以为的是,本地host文件里面有对应域名的话, 访问的IP地址会被替换成host文件里面对应的ip地址, 而服务器是获取不了你访问的域名的.

但事实是, 访问80端口, 通过域名访问, 网关获取了你的域名, 并查出你的域名没有备案, 那么说明请求报文肯定带上了这个域名.

那么就用Wireshark抓包分析一下(在我电脑里面吃土一年的Wireshark终于再次有了用武之地).

使用IP地址访问, 抓到的请求数据如下.

使用访问, 抓到的请求数据如下.

经过抓包测试后才发现, 使用浏览器通过域名访问服务器, 域名确实通过host文件被替换成了ip地址, 但是请求报文的头也还带有你的本地域名(请求头的Host属性).

想来阿里云服务器就是通过Hypertext Transder Protocol中的Host来判断出你使用的这个域名没有经过备案.

最终解决方式

既然是请求头携带了域名, 那就容易了, 要知道请求头是由浏览器进行封装的, 而万能强大的chrome浏览器修改个host简直太容易了有没有.

虽然不知道解决方式, 但是我知道强大的 chrome 九成九能实现这个简单的需求.

于是就用百度搜索答案, 结果搜了10分钟什么都没有搜出来.

之后换成chrome搜索, 尼玛, 前三行立刻就跳出来了一个吸引我的插件,ModHeader, 号称能够修改请求和相应的各种数据, 在此惊讶chrome搜索强大力量的同时顺便把百度搜索骂一遍.

我马上安装了这个插件, 并根据操作很快找到了两种解决方式

第一种配置

使用redirect URLs功能映射地址, 这样的话, 当你输入域名的时候, 浏览器会自动将域名转换为IP地址, 但是这样的话浏览器URL栏里面的, 会变成ip118.xxx.xx.xxx, 感觉用着也不太优雅.

第二种配置(我当前在使用的配置)

当浏览器访问域名的时候, 浏览器会自动把报文头里面的 Host 属性改为ip地址, 这样的话浏览器Url栏里面显示的依然是.

此时使用 Wireshark 抓包发现Host属性的值也变成了ip地址, 完美解决了我的需求

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。