nginx upstream 中带下划线bug,前端会报400错误
有一次偶然的配置,发现nginx 在配置upstream的时候, 如果名字带有下划线,会导致前端返回 400 错误。 百度之后其他人好像也遇到了这个问题: https://blog.csdn.net/horizon_zy/article/details/80139658 为什么会出现这种问题呢? 我们项目有很多的upstream配置,有的也是有下滑线的,为什么他们没有报错,就我们这里报错了。 改完之后(upstream为没有下划线的) 是因为 升级了SpringBoot版本导致了该问题 ,又因为是http的头部变化导致的问题,故可以大胆猜测是因为升级了Tomcat版本导致的该问题。 为什么新版的tomcat为什么出现这个问题? 在SpringBoot项目的issue中搜索了下400问题,发现确实有相关的issue。 https://github.com/spring-projects/spring-boot/issues/13236 虽然看上去跟我们的问题是一样的,都是400问题,但是具体发生的原因是不一样的。这个issue是说,如果domain name .ext 包含数字,比如 “domain.sf1m”,会出现400问题。这个问题也已经在tomcat的新版本中修复了。 带有下划线的Host的http请求,tomcat认为是有问题 那为什么之前版本的tomcat是正常的呢?