diff options
Diffstat (limited to 'blog/2022-12-01-nginx-compression.org')
-rw-r--r-- | blog/2022-12-01-nginx-compression.org | 109 |
1 files changed, 59 insertions, 50 deletions
diff --git a/blog/2022-12-01-nginx-compression.org b/blog/2022-12-01-nginx-compression.org index 2a22d76..c3669dd 100644 --- a/blog/2022-12-01-nginx-compression.org +++ b/blog/2022-12-01-nginx-compression.org @@ -1,40 +1,44 @@ -+++ -date = 2022-12-01 -title = "Enable GZIP Compression on Nginx" -desciption = "Enable gzip compression on Nginx to server small text-based resources faster." -+++ +#+title: Enable GZIP Compression on Nginx +#+date: 2022-12-01 -## Text Compression +** Text Compression +:PROPERTIES: +:CUSTOM_ID: text-compression +:ID: 24C2F6E7-129E-42F3-91F0-A6C6C519FA01 +:END: +Text compression allows a web server to serve text-based resources +faster than uncompressed data. This can speed up things like First +Contentful Paint, Tie to Interactive, and Speed Index. -Text compression allows a web server to serve text-based resources faster than -uncompressed data. This can speed up things like First Contentful Paint, Tie to -Interactive, and Speed Index. +** Enable Nginx Compression with gzip +:PROPERTIES: +:CUSTOM_ID: enable-nginx-compression-with-gzip +:ID: C018C991-E253-4779-A702-AEB69614499F +:END: +In order to enable text compression on Nginx, we need to enable it +within the configuration file: -## Enable Nginx Compression with gzip - -In order to enable text compression on Nginx, we need to enable it within the -configuration file: - -```sh +#+begin_src sh nano /etc/nginx/nginx.conf -``` +#+end_src -Within the `http` block, find the section that shows something like the block -below. This is the default gzip configuration I found in my `nginx.conf` file on -Alpine Linux 3.17. Yours may look slightly different, just make sure that -you're not creating any duplicate gzip options. +Within the =http= block, find the section that shows something like the +block below. This is the default gzip configuration I found in my +=nginx.conf= file on Alpine Linux 3.17. Yours may look slightly +different, just make sure that you're not creating any duplicate gzip +options. -```conf +#+begin_src conf # Enable gzipping of responses. #gzip on; # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'. gzip_vary on; -``` +#+end_src Remove the default gzip lines and replace them with the following: -```conf +#+begin_src conf # Enable gzipping of responses. gzip on; gzip_vary on; @@ -42,33 +46,38 @@ gzip_min_length 10240; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml; gzip_disable "MSIE [1-6]\."; -``` - -## Explanations of ngx_http_gzip_module Options - -Each of the lines above enables a different aspect of the gzip response for -Nginx. Here are the full explanations: +#+end_src +** Explanations of ngx_http_gzip_module Options +:PROPERTIES: +:CUSTOM_ID: explanations-of-ngx_http_gzip_module-options +:ID: C180752B-E1B9-49A5-B180-84488068A76A +:END: +Each of the lines above enables a different aspect of the gzip response +for Nginx. Here are the full explanations: -- `gzip` – Enables or disables gzipping of responses. -- `gzip_vary` – Enables or disables inserting the “Vary: Accept-Encoding” -response header field if the directives gzip, gzip_static, or gunzip are active. -- `gzip_min_length` – Sets the minimum length of a response that will be -gzipped. The length is determined only from the “Content-Length” response header field. -- `gzip_proxied` – Enables or disables gzipping of responses for proxied -requests depending on the request and response. The fact that the request is -proxied is determined by the presence of the “Via” request header field. -- `gzip_types` – Enables gzipping of responses for the specified MIME types in -addition to “text/html”. The special value “*” matches any MIME type (0.8.29). -Responses with the “text/html” type are always compressed. -- `gzip_disable` – Disables gzipping of responses for requests -with “User-Agent” header fields matching any of the specified regular -expressions. - - The special mask “msie6” (0.7.12) corresponds to the regular expression “MSIE -[4-6]\.”, but works faster. Starting from version 0.8.11, “MSIE 6.0; ... SV1” is -excluded from this mask. +- =gzip= -- Enables or disables gzipping of responses. +- =gzip_vary= -- Enables or disables inserting the "Vary: + Accept-Encoding" response header field if the directives gzip, + gzip_static, or gunzip are active. +- =gzip_min_length= -- Sets the minimum length of a response that will + be gzipped. The length is determined only from the "Content-Length" + response header field. +- =gzip_proxied= -- Enables or disables gzipping of responses for + proxied requests depending on the request and response. The fact that + the request is proxied is determined by the presence of the "Via" + request header field. +- =gzip_types= -- Enables gzipping of responses for the specified MIME + types in addition to "text/html". The special value “*” matches any + MIME type (0.8.29). Responses with the "text/html" type are always + compressed. +- =gzip_disable= -- Disables gzipping of responses for requests with + "User-Agent" header fields matching any of the specified regular + expressions. + - The special mask "msie6" (0.7.12) corresponds to the regular + expression "MSIE [4-6].", but works faster. Starting from version + 0.8.11, "MSIE 6.0; ... SV1" is excluded from this mask. -More information on these directives and their options can be found on the -[Module -ngx_http_gzip_module](https://nginx.org/en/docs/http/ngx_http_gzip_module.html) -page in Nginx's documentation. +More information on these directives and their options can be found on +the [[https://nginx.org/en/docs/http/ngx_http_gzip_module.html][Module +ngx_http_gzip_module]] page in Nginx's documentation. |