Applicable to:
- Plesk for Linux
Question
How to enable/disable gzip compression in nginx on a Plesk server?
Answer
Note: Since Plesk Obsidian 18.0.33 it is possible to use BROTLI compression which is considered to be better compression than GZIP.
For a domain in Plesk
-
Go to Domains > example.com > Hosting & DNS > Apache & nginx Settings.
-
Add the following directives to the Additional nginx directives field:
CONFIG_TEXT: gzip on;
gzip_disable "MSIE [1-6]\\.(?!.*SV1)";
gzip_proxied any;
gzip_comp_level 5;
gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/rss+xml text/javascript image/x-icon image/bmp image/svg+xml;
gzip_vary on;Note: This is an example. If needed, add other file types in the
gzip_types
section, e.g.application/javascript
,application/js
, etc. The full list of available types can be found on a server in the file/etc/nginx/mime.types
. -
Apply the changes.
-
Go to Domains > example.com > Hosting & DNS > Apache & nginx Settings.
Note: To disable gzip compression for a domain/subdomain that does not exist in Plesk (e.g. hostname), create it first.
-
Add the following directive to the Additional nginx directives field:
CONFIG_TEXT: gzip off;
-
Click Apply to save the changes.
For all domains via nginx global configuration
-
Connect to a Plesk server via SSH.
-
Create the
gzip.conf
file inside nginx conf.d directory:# touch /etc/nginx/conf.d/gzip.conf
-
Open the file in any text editor. In this example, we are using the vi editor:
# vi /etc/nginx/conf.d/gzip.conf
-
Insert the following content in it:
CONFIG_TEXT: gzip on;
gzip_disable "MSIE [1-6]\\.(?!.*SV1)";
gzip_proxied any;
gzip_comp_level 5;
gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/rss+xml text/javascript image/x-icon image/bmp image/svg+xml;
gzip_vary on;Note: This is an example. If needed, add other file types in the
gzip_types
section, e.g.application/javascript
,application/js
, etc. The full list of available types can be found on a server in the file/etc/nginx/mime.types
. -
Save the changes and close the file.
-
Test nginx configuration:
# nginx -t
-
Reload
nginx
configuration to apply the changes:# service nginx reload
-
Now gzip compression is enabled for all domains on the server.
To verify that gzip compression is enabled, use the command below. When gzip is enabled you will see 'Content-Encoding: gzip' in the output:
Note: If the website has a www redirection, change the website name to www.example.com.
-
If the website is using HTTP connection:
# curl -s -H "Accept-Encoding: gzip" -I http://example.com | grep -i Content-Encoding
Content-Encoding: gzip -
If the website is using HTTPS connection:
# curl -s -H "Accept-Encoding: gzip" -I https://example.com --insecure | grep -i Content-Encoding
Content-Encoding: gzip
-
-
Connect to a server via SSH.
- Search for the line in "gzip on" via all nginx config files:
# grep -Ri "gzip on" /etc/nginx/
-
To disable gzip compression, open the corresponding file in a text editor and change
gzip on
togzip off
. -
Save the changes and close the file.
-
Restart nginx to apply the changes:
# service nginx restart
Additional Information
To learn more about gzip compression module and gzip types, visit the following nginx documentation page:
To enable gzip compression in Apache, visit this KB article.
Comments
1 comment
Hello :) I try to host my WebGl project on my server but there is always an error: «Unable to parse Build/museum_video.framework.js.gz! This can happen if build compression was enabled but web server hosting the content was misconfigured to not serve the file with HTTP Response Header "Content-Encoding: gzip" present. Check browser Console and Devtools Network tab to debug». I tired to solve the problem with your first solution «Enabling gzip compression for a domain in Plesk» but that didn’t work. Do you know why? I still have the same error.
Please sign in to leave a comment.