3/5 - (2 голоса)

Настроили сервер Nginx. Тем не менее, он отправляет неправильный тип контента. Мне нужно заставить Nginx отправлять определенные «Content-Type: text / xml; кодировка = UTF-8“ . Как настроить Nginx для переопределения типа контента для заданного URL?

MIME является аббревиатурой от многоцелевых расширений почты в Интернете (MIME). Это стандарт, который указывает характер и формат документа, файла или  байтов. Все веб-браузеры используют тип MIME, чтобы определить, как обрабатывать URL. Следовательно, важно, чтобы Nginx отправлял правильный тип MIME в заголовке Content-Type ответа.

Как увидеть заголовок Content-Type

Используйте следующую команду curl:

curl -I url
curl -I curl -I https://itfb.com.ua/media/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

Тип содержимого: image/gif указывает, что изображение и подтип является изображением gif.

Как узнать mine types по умолчанию в Nginx

Найдите файл конфигурации с именем mime.types внутри каталога конфигурации nginx:

find /etc/nginx -name mime.types

Используйте команду cat или команду vi для просмотра файла mime.types:

vi /etc/nginx/mime.types

смена типа контента в nginx

Переопределить тип контента Nginx

Скажем, когда я запрашиваю файл atom.xml, тип контента: text/xml

И я хочу, чтобы это было исправлено следующим образом:

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

Я снова использую команду curl:
curl -I https://itfb.com.ua/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/itfb.com.ua/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://itfb.com.ua/atom/atom.xml

Заключение
На этой странице показано, как переопределить Content-Type по умолчанию в nginx.