如何使用Nginx Web服务器覆盖内容类型

时间:2020-01-09 10:39:32  来源:igfitidea点击:

我配置了Nginx服务器。
但是,它发送了错误的内容类型。
如何强制Nginx发送特定的Content-Type:text/xml; charset = UTF-8
如何配置Nginx覆盖给定URL位置的内容类型?
简介MIME是多用途Internet邮件扩展(MIME)的首字母缩写。
它是指示文档,文件或字节分类的性质和格式的标准。
所有的Web浏览器都使用MIME类型来确定如何处理URL。
因此,Nginx在响应的Content-Type标头中发送正确的MIME类型至关重要。

如何查看Content-Type标头

使用以下curl命令:

curl -I url
curl -I curl -I https://www.theitroad.local/media/new/category/old/nginx.gif

输出示例:

HTTP/2 200 
date: Mon, 21 Jan 2019 12:07:22 GMT
content-type: image/gif
content-length: 377
cache-control: max-age=315360000
...
.

如何在Nginx中找出默认的地雷类型

在nginx配置目录中查找名为mime.types的配置文件:

# find /etc/nginx -name mime.types

使用cat命令或vi命令查看mime.types文件:

vi /etc/nginx/mime.types

用Nginx Web服务器覆盖内容类型

说当我请求atom.xml文件时,有

content-type: text/xml

我希望它是如下正确的一种:

Content-Type: content-type: text/html; charset=UTF-8

同样,我使用curl命令:

curl -I https://www.theitroad.local/atom/atom.xml

要解决此问题,请更新您的mime.types文件:

# vi /etc/nginx/mime.types

并确保存在以下配置:

application/atom+xml atom;

保存并关闭文件。
重新加载/重启Nginx服务。
例如,GNU/Linux用户可以运行:

# systemctl reload nginx

如何强制Nginx发送特定的Content-Type

另一种选择是将以下内容直接添加到配置文件中:

types {
    application/atom+xml    atom xml;
}

Nginx覆盖URL的内容类型

对于给定的URL模式,也可以覆盖内容类型。
例如,我编辑了/etc/nginx/domains/theitroad.local/default.conf并在服务器上下文中添加了以下内容:

### force utf-8 and content type, good bots for SEO ##
    location = /atom/atom.xml {
        ## override content-type ##
        types { } default_type "application/atom+xml; charset=utf-8";
 
        ## override header (more like send custom header using nginx) #
        add_header x-robots-tag "noindex, follow";
    }

保存并关闭文件。
重新启动或重新加载nginx服务器:

# service nginx reload

测试一下:

curl -I https://www.theitroad.local/atom/atom.xml