Debian 9 - nginx игнорирует блок местоположения - PullRequest
1 голос
/ 04 мая 2019

Ниже приводится содержимое моего файла mydomain.conf для nginx.

server {
    server_name  www.mywebsite.com;

#the below works
add_header "this" "works";

    root /var/www/yii2app/web;
    index index.php;

    charset utf-8;
    access_log  off;
    error_log   off;

    location ~* \.(txt|js|json|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar|svg)$ {
        try_files $uri =404;
    }

    location /img {
        add_header Cache-Control "public, no-transform";
        add_header "hello" "word";
        expires max;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/yii2app/web/$fastcgi_script_name;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include        fastcgi_params;
    }

}

Я пытался настроить управление кэшем, когда понял, что мои блоки местоположения не читаются или не учитываются nginx.

Я проверил это, поместив некоторые дополнительные значения ключа заголовка, такие как:

add_header "this" "works";

и

add_header "hello" "word";

Я вижу, что "это" "работает",когда я тестирую, используя curl, но не "hello", "world", который находится в блоке местоположения / img ...

curl -I http://www.mywebsite.com/img/test.gif

Что я делаю не так?Вышеуказанный конфиг является точным конфигом, который у меня есть на данный момент, кроме адреса веб-сайта и корневого пути.Я закомментировал все остальные строки конфигурации.

1 Ответ

0 голосов
/ 04 мая 2019

Блоки местоположения регулярного выражения оцениваются по порядку и имеют приоритет над блоками обычного префикса местоположения.

URI /img/foo.gif будет соответствовать блоку location ~* \.(txt|js|json|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar|svg)$ в предпочтении перед блоком location /img, независимо отorder.

Вы можете присвоить префиксу больший приоритет, используя модификатор ^~.

Например:

location ^~ /img { ... }

См. этот документ для деталей.

В качестве альтернативы, если вам не нужна деталь add_header, вы можете использовать map с директивой expires .

...