如何在nginx中为重写的资源添加标头?

时间:2016-02-12 13:58:55

标签: php cakephp nginx

我正在使用cakephp,我的一些资产(javascript和css)需要重写 - 例如:

location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
try_files $uri $uri/ /index.php?$uri\&$args;
expires 1M;
access_log off;
add_header Pragma "public";
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

然而,当我进行重写时,我在此位置块中添加的标头会丢失。 Cakephp中的重写需要index.php文件,因此上面的try_files指令最终将我带到了这个位置:

location ~* \.(?:php)$ { ... }

然后,资源仅接收在该位置设置的标头。这不是我想要的 - 我希望能够重写资产并应用正确的标题...尽管在网上到处查找,但我无法找到如何防止重写更改资源的标题。

1 个答案:

答案 0 :(得分:0)

应该通过将您的webroot设置为文档根目录来工作。

检查下面的配置

root /home/your_user/your_app/webroot;
index index.html index.htm index.php;

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location / {
    try_files $uri $uri/ /index.php?$args;
}

向资源添加标题

location ~* \.(type|type1|type2|type3)$ {
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
}

http://nginx.org/en/docs/http/ngx_http_headers_module.html