Hello!
2012/10/22 lion:
> 只是我还不是太明白,假如A用户以utf-8的编码方式向nginx服务器发送请求,而B用户以gbk的编码方式向nginx发送请求,在这个时候,nginx是如何识别这两种请求的内容并予以响应的呢?
> 是不是nginx只允许特定的编码方式的字节流输入,或者nginx对输入的请求进行了统一编码呢?
>
我说了,nginx 并不会检查或者识别字符编码,对它有意义的只是字节流。UTF-8 也好,GBK 也好,都是字节流而已,在 nginx
看来毫无区别(亦无意义)。
在 HTTP 协议本身基于 octet 的(即一般意义上的“字节”),而不是遵循某种字符编码的 character(即字符)。
如果你需要把 URI 映射到你的本地文件系统,则 nginx 也是直接把字节序列映射到你的文件系统上。所以你的 URI
使用的字符编码只需和你本地文件系统的一致便可以了。nginx
只是照单转发而已,它根本不关心,也根本不知道请求和文件系统实际使用的字符编码。所以,如果你想让使用各种不同字符编码的请求都能顺利映射到你的使用了
UTF-8 编码的文件名上的话,你需要自己显式地在 nginx 中对请求进行编码转换甚至自动的编码识别(通过 ngx_lua 模块,或者
ngx_iconv 模块,等等)。
Best regards,
-agentzh