Nginx обслуживать один файл c не удается при получении полного пути - PullRequest
1 голос
/ 05 января 2020

Я настраивал очень простой наивный nginx блок конфигурации только для того, чтобы сервер обслуживал одно изображение на пути, используя псевдоним. Вот конфиг:

location /images/logo/ {
    alias /var/www/logo.png;
}

Запрос сервера на hostname/images/logo дает мне выдавленное изображение (не отображается). Тем не менее, запрос его с трейлинг /, как определено в местоположении, даст мне ошибку. В частности, индексирование на основе журналов:

[alert] 16367 # 16367: * 3 "/ var / www/logo.pngindex.html" - это не каталог

, что разочаровывает, но Хорошо, я добавил autoindex off; в блок конфигурации. Та же ошибка все еще. Я попытался изменить местоположение на регулярное выражение, чтобы сделать конечный / необязательным, но это, похоже, тоже мало что дает.

Я чувствую себя довольно побежденным простым псевдонимом stati c. Я просто хочу, чтобы путь /images/logo/ возвращал изображение независимо от конечного значения sh. Кто-нибудь знает простое исправление для этого?

Кроме того, я предполагал, что добавление default_type image/png; в блок исправит тип контента, поэтому NGINX поможет браузеру отображать и не загружать изображение, но это также не кажется на работу.

TLDR:

  • Попытка получить NGINX в ответ с изображением stati c на пути с или без трейлинга /
  • Пытаясь заставить NGINX ответить с правильным типом контента для браузеров, чтобы понять

1 Ответ

2 голосов
/ 05 января 2020

Вместо оператора alias вы можете использовать try_files для определения имени файла. Преимущество заключается в том, что будет объявлено расширение файла, что обеспечит правильную работу типов MIME.

Например:

location /images/logo {
    root /var/www;
    try_files /logo.png =404; 
}

Подробнее см. в этом документе .

...