Я создал веб-сайт django, который будет обслуживаться Nginx, все работало отлично, пока недавно не перестали отображаться изображения.
Я попытался проверить возможную причину этого странного развития, используя завиток
а потом понял, что Content-Type не распознается как Тип содержимого: изображение/jpeg
возвращает Тип содержимого: текст/html; кодировка = utf-8
Это поведение выглядит странно, поскольку я включил mime.types в моем nginx.conf файл.
Ниже приведен пример ответа от завиток
команда
пользователь@сервер:~$ curl -I https://domain.name/media/upload/image.jpg
HTTP/1.1 200 ОК
Сервер: nginx/1.18.0 (Ubuntu)
Дата: воскресенье, 29 мая 2022 г., 00:45:53 по Гринвичу
Тип содержимого: текст/html; кодировка = utf-8
Длина контента: 11392
Соединение: Keep-alive
Параметры X-Frame: ЗАПРЕТИТЬ
Варьировать: печенье
X-Content-Type-Options: nosniff
Referrer-Policy: тот же источник
Cross-Origin-Opener-Policy: тот же источник
Set-Cookie: csrftoken=T9Z3jrp4dzOAINxo6JzOUyjIGwGYHoc37TZaYsIOmHHyrQUw30vI6ETIAcy66Wnr; expires=Вс, 28 мая 2023 г., 00:45:53 по Гринвичу; Максимальный возраст=31449600; Путь=/; Самесайт=слабый
вот мой полный nginx.conf
файл
www-данные пользователя;
рабочие_процессы авто;
pid /run/nginx.pid;
включить /etc/nginx/modules-enabled/*.conf;
События {
worker_connections 768;
# multi_accept on;
}
http {
##
# Основные настройки
##
отправить файл включен;
tcp_nopush включен;
типы_хэш_макс_размер 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
включить /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Настройки SSL
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Удаление SSLv3, ссылка: POODLE
ssl_prefer_server_ciphers включен;
##
# Настройки ведения журнала
##
журнал_доступа /var/log/nginx/access.log;
журнал_ошибок /var/log/nginx/error.log;
##
# Настройки Gzip
##
gzip включен;
# gzip_vary on;
# gzip_proxyed любой;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Конфигурации виртуального хоста
##
включить /etc/nginx/conf.d/*.conf;
включить /etc/nginx/sites-enabled/*;
}
#почта {
# # См. пример сценария аутентификации по адресу:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# сервер {
# слушать localhost:110;
# протокол pop3;
# прокси включен;
# }
#
# сервер {
# слушать localhost:143;
# протокол imap;
# прокси включен;
# }
#}
Содержание /etc/nginx/sites-enabled/приложение
# /etc/nginx/сайты с поддержкой
сервер {
server_name my_server_IP my_server_NAME;
location = /favicon.ico { access_log off; log_not_found выключен; }
местоположение /статическое/ {
корень /дом/пользователь/приложение;
}
место расположения / {
включить proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
слушать 443 ssl;
ssl_certificate /path/to/certfullchain.pem;
ssl_certificate_key /path/to/certprivkey.pem;
включить /etc/cert-provider/options-ssl-nginx.conf;
ssl_dhparam /etc/cerrt-provider/ssl-dhparams.pem;
}
сервер {
если ($host = www.domain.name {
вернуть 301 https://$host$request_uri;
}
если ($ хост = домен.имя) {
вернуть 301 https://$host$request_uri;
}
слушать 80;
server_name my_server_IP my_server_NAME;
вернуть 404;
}
Примечание: Я обслуживаю этот сайт с помощью gunicorn