nginx文件服务器中文编码,nginx中文日志乱码的问题
看到自己的服务器上又好多乱码的日志,查了一下据说nginx会将中文变成16进制,想把他们正常显示出来。乱码日志:[22/Mar/2020:16:04:27 +0800] "GET /\xE4\xB8\xAD\xE6\x96\x87 HTTP/1.1" 301 169 "-" "curl/7.54.0" "-"解决方法:前提:nginx版本大于1.11.8,ubuntu16.04默认安装的nginx
看到自己的服务器上又好多乱码的日志,查了一下据说nginx会将中文变成16进制,想把他们正常显示出来。
乱码日志:
[22/Mar/2020:16:04:27 +0800] "GET /\xE4\xB8\xAD\xE6\x96\x87 HTTP/1.1" 301 169 "-" "curl/7.54.0" "-"
解决方法:
前提:nginx版本大于1.11.8,ubuntu16.04默认安装的nginx版本不够,更新方法:
https://blog.csdn.net/hj605635529/article/details/80739335
修改配置文件,http层级的:
nginx配置文件log_format增加 escape参数,json,或none都可以。
log_format main escape=none '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
再次请求:
curl wangjinyu.net/中文
再次看日志,已经可以显示中文。
[22/Mar/2020:16:07:25 +0800] "GET /中文 HTTP/1.1" 301 169 "" "curl/7.54.0" ""
ps:
用Python的requsets请求还是不行,因为requests好像会对url进行urlencode,所以还是显示乱码。
In [5]: res=requests.get('http://wangjinyu.net/中文')
In [6]: res.url
Out[6]: u'https://wangjinyu.net/%E4%B8%AD%E6%96%87'
nginx日志:
[22/Mar/2020:16:29:33 +0800] "GET /%E4%B8%AD%E6%96%87 HTTP/1.1" 404 153 "" "python-requests/2.22.0" ""
nginx相关文档 :
http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format
更多推荐
所有评论(0)