3

I made some optimizations using gtmetrix to improve web site performance. Like enabling gzip compression etc..

When I try to test site using online services like browserling.com images are not dislayed.

https://programlama.tk

When I try to connect from server. Like 192.168.1.xx it works fine.

Related part of /etc/nginx/nginx.conf is like that :

##
# Gzip Settings
##

gzip on;

gzip_vary on;
gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

And in /etc/nginx/sites-enabled/programlama.tk I added this part.

location ~*  \.(jpg|jpeg|png|gif|ico)$ {
    expires 365d;
}

location ~*  \.(css|js)$ {
    expires 30d;
}

location ~*  \.(pdf)$ {
    expires 30d;
}

Update :

I suspect the problem is in server block in location expires part.

server {
    server_name programlama.tk;

    location /static {
        limit_except GET HEAD POST {
             deny all;
        }
        include yasaklananlar.conf;
        # alias
    }

    location / {
        limit_except GET HEAD POST {
             deny all;
        }
        include yasaklananlar.conf;
        include proxy_params;
        # proxy_pass
    }

    location ~*  \.(jpg|jpeg|png|gif|ico)$ {
        expires 365d;
    }

    location ~*  \.(css|js)$ {
        expires 30d;
    }

    location ~*  \.(pdf)$ {
        expires 30d;
    }

    # server settings

}

If I remove location expires part in server block and restart Nginx server it displays images fine.

  • Can you roll back your changes? – Tim Nov 8 '18 at 8:22
  • Yes I roll back changes now and it works fine. But shouldn't be a way to both improve site performance and display images correctly. – Erdem Nov 8 '18 at 8:32
2

Nginx chooses a single location to process a request.

So when a new regular expression location is added to set the expires value on an extension, it breaks both your location /static {...} and location / {...} configurations.

As an alternative to using location to set expires, you can use a map instead. See this document for details.

For example:

map $request_uri $expires {
    default                           off;
    ~*\.(jpg|jpeg|png|gif|ico)(\?|$)  365d;
    ~*\.(css|js|pdf)(\?|$)            30d;
}    

server {
    ...
    expires $expires;

    location /static { ... }
    location / { ... }
    ...
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.