Назад | Перейти на главную страницу

Директива о местоположении не работает

Для моего сервера NGINX у меня есть виртуальный сервер, настроенный только для раздачи статического контента. На данный момент я пытаюсь настроить так, чтобы у изображений был срок годности. Однако, когда я создаю для этого директиву местоположения, все просто приводит к ошибке 404.

Моя конфигурация сейчас выглядит так:

/srv/www/static.conf

server {
    listen                          80;
    server_name                     static.*.*;

    location / {
            root                    /srv/www/static;
            deny                    all;
    }

    location /images {
            expires                 1y;
            log_not_found           off;
            root                    /srv/www/static/images;
    }
}

Обратите внимание, этот файл включен из /etc/nginx/nginx.conf внутри директивы http

Я пытаюсь получить доступ к изображению, скажем, ... static.example.com/images/screenshots/something.png. Конечно, изображение также существует на /srv/www/static/images/screenshots/something.png. Однако переход по указанному адресу не работает и просто сообщает мне 404 Не Найдено.

Однако, если я удалю location /images и изменить location / к следующему ...

location / {
    root /srv/www/static;
}

Оно работает! Что я здесь делаю не так?

Ваша конфигурация соответствует конфигурации nginx ловушки Вы должны прочитать его перед настройкой nginx.

Чтобы ответить на ваш вопрос, вы не должны определять root в местоположении определите его один раз, и тег местоположения автоматически позволит вам назначить доступ к определенным каталогам.

Также вместо определения настраиваемого корня для каталога изображений используйте try_files. В $uri составят карту /images/ каталог с /static/images/.

Попробуйте эту конфигурацию:

server {
    listen                          80;
    server_name                     static.*.*;
    root                            /srv/www;

    location /static/ {
            deny                    all;
    }

    location /images/ {
            expires                 1y;
            log_not_found           off;
            autoindex               off;
            try_files $uri static/images$uri;
    }
}