线上运行的平台突然出现无法访问的情况,经过排查发现是SSL证书过期了,但是已经下班,来不及处理,就临时改为http访问了;第二天再进行处理。
由于是小范围内使用的平台,通知使用人员地址略有变化也不是什么大问题;当如果第二天修改后,再通知使用https访问,就太麻烦了。
于是有了需求:用户永远使用http进行访问,如果SSL正常可用时,则默认跳转使用https访问;如果下次再出现再出现SSL不能使用的情况,则修改为http访问时,无需再通知用户更改访问地址。
查了几个方法,采用了最简单的一个。
当使用http访问https的请求时,nginx会产生497的状态码,因此将该状态码重新定向到https地址即可。这样就能实现同一个端口同时使用http和https访问。
问题来了:如果要把未配置SSL访问的https请求定向到http可以吗?
暂时还没找到实现的方法,是不是不能实现呢?如果不能实现,也是有道理的。
从http定向到https访问,安全性是升级的,用户不用担心,也无需察觉;
但如果用户需要使用https访问,却被直接定向到安全层级低的http了,可能会产生一些问题。
暂时知识猜测,待研究。