如何让Nginx为TXT文件返回Content-Type: text/plain; charset=UTF-8响应头
如何让Nginx为TXT文件返回Content-Type: text/plain; charset=UTF-8响应头
这个问题其实挺常见的,我来给你几个简单可行的解决方案,都是基于你现有Nginx配置(1.18.0 + Ubuntu 20.04)来调整的:
方法一:直接修改mime.types文件(最直接的方式)
你现在的mime.types里已经把txt文件映射到了text/plain,但默认没指定字符集。只需要修改这一行的配置即可:
- 打开mime.types配置文件:
sudo nano /etc/nginx/mime.types - 找到这一行:
修改为:text/plain txt;text/plain txt charset=utf-8; - 保存文件后,先测试Nginx配置是否合法:
sudo nginx -t - 如果测试提示
nginx: configuration file /etc/nginx/nginx.conf test is successful,就重启Nginx生效:sudo systemctl restart nginx
方法二:通过charset指令全局或局部配置
如果你不想修改mime.types文件,可以用Nginx的charset指令来指定字符集:
全局生效(所有text类型文件都带charset)
在nginx.conf的http块里添加一行:
http { # 其他现有配置... charset utf-8; include /etc/nginx/mime.types; # 其他现有配置... }
仅针对TXT文件生效
如果只想让txt文件带上charset,可以在对应的server块里添加一个location规则:
server { # 其他现有配置... location ~* \.txt$ { charset utf-8; } }
同样,修改后记得执行nginx -t测试配置,再重启Nginx。
为什么原来的配置没有charset?
默认情况下,Nginx的mime.types里text/plain类型并没有关联字符集参数,所以返回的Content-Type只有text/plain。通过上面两种方法给text/plain类型加上charset指定后,Nginx就会自动在响应头里补充; charset=UTF-8了。
备注:内容来源于stack exchange,提问作者hanshenrik
相关产品推荐
相关产品推荐

