Рейтинг:1

NGINX неправильно обслуживает файлы изображений

флаг es

Я создал веб-сайт 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

Рейтинг:1
флаг es

Я смог решить эту проблему, добавив новую директиву местоположения, которая соответствует моим медиафайлам. В этом случае мои файлы загружаются в СМИ

Я исправил это, добавив следующее в свой серверный блок

  местоположение /медиа/ {
        корень /дом/пользователь/приложение;
    }

Теперь мой новый /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; 




}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.