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

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

Для моего сервера 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;
}

Работает! Что я делаю не так?

решение1

Ваша конфигурация соответствует конфигурации 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;
    }
}

Связанный контент