http和https在nginx中的坑

首先需要知道的是通讯协议一共分为7个层次。


通讯协议7个层次


而http和https都在应用层中,https和http之间差的就是一个所谓的安全层,因此可以理解为https=http+TSL(或SSL)。

在nginx中当你配置一个域名得时候,就能很直观的发现,若是使用http则只要80端口就行了,而https就需要443端口,而且还需要配置安全证书。这是由于,http的数据参数是通过明文传输的,数据容易被第三者获取,https加了一个安全层以后,数据就经过加密,尤其是双向认证以后,第三者就很难插足了。

最后遇到一个坑,就是我把https的域名配置在80端口,当我访问的时候发现,依旧能获取,所以就很纳闷https不是需要443端口么。然后我又把去浏览器输入这个网址,以https开头如:https://www.xxx.com,最后发现访问完以后,复制这个网址,网址就变成了http://www.xxx.com.

我就在纳闷,理论上不是应该报错么,怎么会自动解析成http呢,一开始怀疑的是,当输入域名的时候,DNS域名解析的时候,会先访问443端口,若访问不成功,则访问80端口,或者是浏览器在访问域名的时候,若443端口无法访问就访问80端口。因此就做了一个测试。首先将80端口配置好,443端口禁用了,然后在服务器访问 https://www.xxx.com 若是DNS做这样操作的话,那访问的时候肯定会访问成功。但是一访问发现访问不通,然后访问 http://www.xxx.com 发现可以访问。接着去浏览器中访问 https://www.xxx.com。居然可以访问。这说明,https在未配置443端口得时候访问,浏览器会跳转到80端口。

你可能感兴趣的:(http和https在nginx中的坑)