Рейтинг:4

Добавление блока местоположения в файлы кеша заставляет эти файлы возвращать 404 в Nginx.

флаг in

Я хочу кэшировать некоторые статические файлы с помощью Nginx. Но я почему-то не могу заставить его работать.

Это мое nginx.conf:

www-данные пользователя;
рабочие_процессы авто;
pid /run/nginx.pid;
включить /etc/nginx/modules-enabled/*.conf;

События {
    worker_connections 768;
    #multi_accept включен;
}


http {

    #GZIP
    gzip включен;
    gzip_vary включен;
    gzip_proxy любой;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_версия 1.1;
    gzip_min_length 256;
    приложение gzip_types/приложение javascript/приложение json/приложение ld+json/шрифт xml/шрифт eot/шрифт otf/текст ttf/текст css/текст javascript/обычный текст/xml;

    # СЕРВЕРА
    сервер {
            слушать 80;

        имя_сервера пример.com;
        если ($http_host ~* ^www\.(.*)$ )
        {
            вернуть 301 https://$1$request_uri;
        }

        вернуть 301 https://$http_host$request_uri;
    }
    сервер {
        слушать 443 ssl;

        если ($http_host ~* ^www\.(.*)$ )
        {
            вернуть 301 $схема://$1$request_uri;
        }


        #SSL
        ssl_certificate /root/.acme.sh/example.com/fullchain.cer;
        ssl_certificate_key /root/.acme.sh/example.com/example.com.key;

        имя_сервера пример.com;

        # Передать весь трафик моему веб-приложению
        место расположения / {
            proxy_set_header Хост $host;
            proxy_pass http://localhost:8080;
        }

        #Кэширование в браузере
        расположение ~* \.(js|css)$ {
            истекает через 180 дней;
            add_header Прагма "общедоступная";
            add_header Cache-Control "public";
        }
        расположение ~* \.(jpg|jpeg|png|webp|woff|woff2|ttf)$ {
            истекает через 365 дней;
            add_header Прагма "общедоступная";
            add_header Cache-Control "public";
        }

    }
}

Проблема связана с частью «Кэширование браузера». При включении этого блока кода мой сайт загружается, но все css-файлы, javascript-файлы и изображения возвращают 404. Как будто эти файлы игнорируют мои место расположения /.

Я смог решить эту проблему, скопировав/вставив

proxy_set_header Хост $host;
proxy_pass http://localhost:8080;

во всех моих место расположения-blocks, но это не очень элегантно и на самом деле заставило мой сайт работать намного медленнее...

Я также попытался переместить два место расположения-блоки для кеширования браузера в блоке место расположения \ поэтому последний будет действовать как «родитель». Но это не повлияло на поведение изображений и т. д., возвращающих 404.

Как мне настроить кеширование статических файлов в Nginx?

флаг us
Я уже дал ответ на ваш исходный вопрос.

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

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