Debian 9-Nginx忽略位置块

时间:2019-05-04 16:52:02

标签: nginx debian config

以下是nginx的mydomain.conf文件的内容。

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进行测试时,可以看到“ this”“起作用”,而在/ img位置块中却看不到“ hello”“ world” ...

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

我在做什么错?上面的配置是我目前拥有的确切配置,除了网站地址和根路径。我已注释掉其他所有配置行。

1 个答案:

答案 0 :(得分:0)

对正则表达式位置块进行顺序评估,并优先于普通前缀位置块。

URI /img/foo.gif将与location ~* \.(txt|js|json|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar|svg)$块优先匹配location /img块,而与顺序无关。

可以使用^~修饰符为前缀位置赋予更高的优先级。

例如:

location ^~ /img { ... }

有关详细信息,请参见this document

或者,如果不需要add_header部分,则可以使用map with the expires directive