You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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,但默认没指定字符集。只需要修改这一行的配置即可:

  1. 打开mime.types配置文件:
    sudo nano /etc/nginx/mime.types
    
  2. 找到这一行:
    text/plain                            txt;
    
    修改为:
    text/plain                            txt charset=utf-8;
    
  3. 保存文件后,先测试Nginx配置是否合法:
    sudo nginx -t
    
  4. 如果测试提示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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 08:59:28