以前老项目新使用了jetty嵌入式启动服务,使用nginx proxy ssi时有中文报400错误。
现象:
nginx proxy+jetty时的ssi传参不能gbk中文的问题。在nginx proxy+resin时是正常的。
<!--#include virtual="/test.do?txt=中文" -->
nginx提示: "charset_map" between the charsets "iso-8859-1" and "gbk"
经过测试和查资料得出:Jetty9.3.x以上实现了RFC 7230规范,而nginx传输时估计是 RFC 2616规范。
解决办法:
使用jetty 8(原打算使用jetty 9.2,但jsp一直没解决成功)
启动服务前增加:System.setProperty("org.eclipse.jetty.util.URI.charset", "GBK");
ssi中文正常。哈哈,用了好长时间试了各种办法。唉。