为什么是 9443,不是 443
备案还没走完的那段时间,这台机器上的服务在 80 和 443 上一直连不上。第一反应是防火墙:端口是不是没放行?服务是不是没起来?查了一圈,本地监听正常,防火墙规则也没拦。
后来才确认,拦截发生在更外面一层:备案未通过时,服务商在链路上挡住了 80/443 的入站访问。请求根本没有到达这台机器,防火墙规则写成什么样都不会有区别。
先把入口挪到 9443
为了先能用,把入口临时放到了 9443。端口能通、证书能签、页面能打开,事情就先往前走。这不算修复,只是绕开——备案通过之后会把入口回到 443。
教训:先分层,再调细节
这次真正值钱的不是换端口,而是排错的顺序。先分清问题在哪一层:是网络层(包到不到)、端口层(连不连得上),还是协议层(握手、证书、Host)。确认了层,再去看那一层里的细节。层次没分清的时候调参数,十个里面九个是白调。
还有一条:别用日志的尾行判断服务是不是活着。日志是历史,进程重启会留下看起来很正常或者很吓人的旧行。判断要用能反映当下的东西:一次真实的请求、一个健康检查,或者干脆从外面连一次。日志用来解释原因,不用来判断状态。
写下来,是因为下次大概还会遇到类似的事:看起来是 A 的问题,其实在 B 那一层。