要给一个网站添加规则,先明确你准备处理的是一个具体主机名,还是一个根域及其子域。DOMAIN 与 DOMAIN-SUFFIX 的差别不在写法长短,而在覆盖范围。
DOMAIN 适合一个明确的主机名
DOMAIN,login.example.com,DIRECT 针对 login.example.com。它不会顺便替 api.example.com 或 example.com 作同样选择。登录页、接口与图片域名可能不同,网页只成功一部分时,应该检查实际失败的请求,而不是只盯着浏览器地址栏。
DOMAIN-SUFFIX 适合根域与子域
DOMAIN-SUFFIX,example.com,DIRECT 可以覆盖 example.com 及其子域。它不是把任意包含 example.com 字样的字符串都匹配进去,不能把域名后缀规则当成简单的文字搜索。
当根域大部分流量要走一种策略,只有一个子域例外时,可把那个子域的 DOMAIN 规则放在前面,再放后缀规则。规则仍从上往下执行,并不会因为某一条写得更具体就自动获得优先级。
实际网站往往不止一个根域
服务可能把静态资源、鉴权和 API 放在不同域名下。添加一条主页规则后依然有资源失败,并不一定是规则语法错了。通过连接页找出那些域名,再决定是否需要扩展覆盖。
不要为了省事把不相关的大范围域名都指向同一个出口。这样以后很难判断异常请求来自哪里,也可能影响原本正常的业务。每次添加后保留修改目的,例如“这个登录接口需要与主页使用一致出口”。
如果连接页只显示 IP,先检查该请求是否本来就使用 IP、DNS 是否经过预期路径,以及客户端是否保留了域名信息。域名规则需要相应的匹配信息,不应仅凭网站名称推断它必然命中。