aboutsummaryrefslogtreecommitdiff
path: root/content/blog/2022-12-01-nginx-compression.org
diff options
context:
space:
mode:
authorChristian Cleberg <hello@cleberg.net>2024-03-29 01:30:23 -0500
committerChristian Cleberg <hello@cleberg.net>2024-03-29 01:30:23 -0500
commit41bd0ad58e44244fe67cb36e066d4bb68738516f (patch)
tree205e844650144648e58700df2b632c89298904d4 /content/blog/2022-12-01-nginx-compression.org
parent797a1404213173791a5f4126a77ad383ceb00064 (diff)
downloadcleberg.net-41bd0ad58e44244fe67cb36e066d4bb68738516f.tar.gz
cleberg.net-41bd0ad58e44244fe67cb36e066d4bb68738516f.tar.bz2
cleberg.net-41bd0ad58e44244fe67cb36e066d4bb68738516f.zip
massive re-write from org-publish to weblorg
Diffstat (limited to 'content/blog/2022-12-01-nginx-compression.org')
-rw-r--r--content/blog/2022-12-01-nginx-compression.org73
1 files changed, 73 insertions, 0 deletions
diff --git a/content/blog/2022-12-01-nginx-compression.org b/content/blog/2022-12-01-nginx-compression.org
new file mode 100644
index 0000000..73d218b
--- /dev/null
+++ b/content/blog/2022-12-01-nginx-compression.org
@@ -0,0 +1,73 @@
+#+title: Enable GZIP Compression in Nginx
+#+date: 2022-12-01
+#+description: Learn how to enable compression in Nginx.
+#+filetags: :nginx:
+
+* Text Compression
+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
+In order to enable text compression on Nginx, we need to enable it
+within the configuration file:
+
+#+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.
+
+#+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:
+
+#+begin_src conf
+# Enable gzipping of responses.
+gzip on;
+gzip_vary on;
+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]";
+#+end_src
+
+* Explanations of ngx_{httpgzipmodule} Options
+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.
+
+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_{httpgzipmodule}]] page in Nginx's documentation.