Adding expires on all images break nginx rewrite
Karl Johnson
karljohnson.it at gmail.com
Tue Mar 17 18:46:44 UTC 2015
Thanks for the reply Nurahmadie.
I changed the location to ~ ^/static/ and the rewrite works again. I've
added a "expires 1w;" in this location to add an expire on all images in
/static but it doesn't seem to apply, images give 200 OK and never cache.
Is it the right way to do it?
location ~ ^/static/ {
rewrite ^/static/images/([0-9])\-([0-9]+)x([0-9]+)/(.*)$
/image-fa013d.php?zc=$1&w=$2&h=$3&src=../uploads/images/$4;
expires 1w;
}
Kind regards,
Karl
On Tue, Mar 17, 2015 at 2:02 PM, Nurahmadie Nurahmadie <nurahmadie at gmail.com
> wrote:
> That's because the latter regex location takes precedence over the /static
> one.
> You should first decide if that regex location should also includes
> /static prefix or not.
> If it's a yes, then you should also add the same rewrite-rule inside your
> regex location, if it's a not, you can turn your /static location to also
> use regex like this
>
> location ~ ^/static/ {
> # rewrite here...
> }
>
> So nginx will take a look at that location first when you request for
> /static/* urls.
>
> Another way is to use `try_files`, but then you should probably create
> another (internal) location block to do the rewrite.
>
>
> On Wed, Mar 18, 2015 at 2:49 AM, Karl Johnson <karljohnson.it at gmail.com>
> wrote:
>
>> Hello,
>>
>> I host a website based on Laravel with Nginx 1.6.2 + PHP-FPM 5.6. Most
>> images on the website are in /static folder and are served to visitors with
>> a PHP file (see /static location).
>>
>> I want to add a 30 days expire on all images of this vhost. However, when
>> I add the "location ~* \.(?:image)$ {" rule to add expire, the rewrite for
>> images in /static doesn't work anymore. Nginx reports file not found for
>> all images in /static.
>>
>> Any idea how to make it works?
>>
>> Vhost configuration below:
>>
>> server {
>> listen 80;
>> server_name www.website.com;
>> root /home/www/website.com/public_html/public;
>> access_log /var/log/nginx/website.com-access_log;
>> error_log /var/log/nginx/website.com-error_log warn;
>>
>> location /static {
>> rewrite ^/static/images/([0-9])\-([0-9]+)x([0-9]+)/(.*)$
>> /image-f7ec13d.php?zc=$1&w=$2&h=$3&src=../uploads/images/$4;
>> }
>>
>> ## not working, break the rewrite images above
>> #
>> # location ~*
>> \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc|woff)$ {
>> # expires 30d;
>> # add_header Cache-Control "public";
>> # }
>>
>> include conf.d/custom/restrictions.conf;
>> include conf.d/custom/pagespeed.conf;
>> include conf.d/custom/fpm-laravel.conf;
>>
>> pagespeed DisableFilters combine_css;
>> }
>>
>>
>> Rewrite not working after adding the location for all images expire:
>>
>> 2015/03/17 13:46:12 [error] 11792#0: *12217 openat() "/home/www/
>> website.com/public/static/images/0-0x0/2015/03/2015-03-10-media-fr.jpg"
>> failed (2: No such file or directory)
>>
>>
>>
>> Regards,
>>
>> Karl
>>
>> _______________________________________________
>> nginx mailing list
>> nginx at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx
>>
>
>
>
> --
> regards,
> Nurahmadie
> --
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20150317/dccfc121/attachment.html>
More information about the nginx
mailing list