Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

nginx gzip compression not working

Tags:

nginx

gzip

I have no idea where to place my gzip compression lines within my http block, shown here.

http {
    default_type application/octet-stream;
    include /etc/nginx/mime.types;

    log_format  main    '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;

    keepalive_timeout 65;

    server {

        listen 8080;

        root /usr/share/nginx;

        location / {
            root /usr/share/nginx/html;

            try_files $uri /index.html;

            autoindex off;
        }

        location ~ ^/(images|fonts|videos)/ {
            root /usr/share/nginx/assets;

            autoindex                off;
            expires                  7d;
            proxy_redirect           off;
            proxy_max_temp_file_size 0;

        }

        location ~ \.(mp3|mp4) {

        }
    }

    include /etc/nginx/conf.d/*.conf;
}

The lines I want to use for gzip compression are here, and I don't know whether to put these in the server block, before the server block, or in the location block:

# Compression
gzip on;
gzip_proxied any;
gzip_types text/plain text/xml text/css application/x-javascript;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_static on;

I have gzip_static set to "on" because I'm using gulp-gzip to compress various css and js files.

like image 681
robinnnnn Avatar asked May 08 '26 04:05

robinnnnn


2 Answers

Edit your config file like this and it should work:

gzip on;
gzip_comp_level 6;
gzip_vary on;
gzip_types text/plain text/css application/json application/x-javascript application/javascript text/xml application/xml application/rss+xml text/javascript image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype;

Note the added types, because sometimes those types can be detected in different ways by different systems.

like image 53
peixotorms Avatar answered May 10 '26 17:05

peixotorms


I have my gzip config inside the server bracket. I used the config from @peixotorms for a more extended compression. The result in your case would be:

http {
    default_type application/octet-stream;
    include /etc/nginx/mime.types;

    log_format  main    '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;

    keepalive_timeout 65;

    server {

        # !ADDED GZIP CONFIG!
        gzip on;
        gzip_comp_level 6;
        gzip_vary on;
        gzip_types 
            text/plain 
            text/css 
            application/json 
            application/x-javascript 
            application/javascript 
            text/xml
            application/xml 
            application/rss+xml 
            text/javascript image/svg+xml 
            application/vnd.ms-fontobject 
            application/x-font-ttf 
            font/opentype;            

        listen 8080;

        root /usr/share/nginx;

        location / {
            root /usr/share/nginx/html;

            try_files $uri /index.html;

            autoindex off;
        }

        location ~ ^/(images|fonts|videos)/ {
            root /usr/share/nginx/assets;

            autoindex                off;
            expires                  7d;
            proxy_redirect           off;
            proxy_max_temp_file_size 0;

        }

        location ~ \.(mp3|mp4) {

        }
    }

    include /etc/nginx/conf.d/*.conf;
}

This

like image 25
Frans Sjöström Avatar answered May 10 '26 16:05

Frans Sjöström



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!