From e165ea0f8b4b0bbbde499842188b3230027d127e Mon Sep 17 00:00:00 2001 From: "Waylon S. Walker" Date: Sun, 9 Feb 2025 17:40:36 -0600 Subject: [PATCH] v2 release: Improved NGINX configuration for performance and compatibility - Enhanced proxy buffering to optimize request handling. - Improved gzip compression settings. - Fixed rewrite rules to properly handle static content. - Added resolver for better DNS resolution. - Ensured proper trailing slash redirections. - Updated proxy settings for better MinIO integration. --- CHANGELOG.md | 14 +++++++++++++ helm-chart/Chart.yaml | 2 +- helm-chart/templates/_helpers.tpl | 29 +++++++++++++++---------- justfile | 15 +++++++++++++ scripts/get_release_notes.py | 35 +++++++++++++++++++++++++++++++ version | 2 +- 6 files changed, 84 insertions(+), 13 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 justfile create mode 100755 scripts/get_release_notes.py diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..efd2d49 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,14 @@ +## v2 release: Improved NGINX configuration for performance and compatibility + +2025-02-19 + +- Enhanced proxy buffering to optimize request handling. +- Improved gzip compression settings. +- Fixed rewrite rules to properly handle static content. +- Added resolver for better DNS resolution. +- Ensured proper trailing slash redirections. +- Updated proxy settings for better MinIO integration. + +## v1 release: Initial release + +2025-02-09 diff --git a/helm-chart/Chart.yaml b/helm-chart/Chart.yaml index 65a0a0b..07073c5 100644 --- a/helm-chart/Chart.yaml +++ b/helm-chart/Chart.yaml @@ -2,5 +2,5 @@ apiVersion: v2 name: k8s-pages description: A Helm chart for an NGINX reverse proxy with configurable sites hosted from minio object storage type: application -version: 0.1.0 +version: 2.0.0 appVersion: "1.0" diff --git a/helm-chart/templates/_helpers.tpl b/helm-chart/templates/_helpers.tpl index 57cec55..d57f4b6 100644 --- a/helm-chart/templates/_helpers.tpl +++ b/helm-chart/templates/_helpers.tpl @@ -6,33 +6,40 @@ Generate the content for the NGINX configuration. server { listen 80; server_name {{ .name }}.{{ .host }}; - + gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; - gzip_types text/plain text/html text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript; - + gzip_types text/plain text/html text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; + proxy_buffering off; proxy_intercept_errors on; - + proxy_buffer_size 16k; + proxy_buffers 4 32k; + proxy_busy_buffers_size 64k; + proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; - + + resolver 1.1.1.1 valid=300s ipv6=off; proxy_hide_header x-amz-request-id; proxy_hide_header x-minio-deployment-id; + location ~ ^([^.?]*[^/])$ { + return 301 $1/; + } + location / { - # These rewrites are kept as in your original config. rewrite ^/$ /{{ $.Values.bucket }}/{{ .name }}/index.html break; - rewrite ^(.*)/$ /$1/index.html break; + rewrite ^/(.+)/$ /{{ $.Values.bucket }}/{{ .name }}/$1/index.html break; + rewrite ^/(.+)$ /{{ $.Values.bucket }}/{{ .name }}/$1 break; - # Use the parameterized backend URL. - proxy_pass {{ .minioURL }}/{{ $.Values.bucket }}/{{ .name }}/; + proxy_pass {{ .minioURL }}/{{ $.Values.bucket }}/{{ .name }}; proxy_set_header Host {{ .minioHost }}; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -41,9 +48,9 @@ server { proxy_ssl_server_name on; proxy_ssl_verify off; error_page 404 {{ .errorPage }}; - + add_header Cache-Control "public, max-age={{ $.Values.maxAge }}, stale-while-revalidate={{ $.Values.staleWhileRevalidate }}" always; } - } +} {{- end }} {{- end }} diff --git a/justfile b/justfile new file mode 100644 index 0000000..aa21c14 --- /dev/null +++ b/justfile @@ -0,0 +1,15 @@ +version := `cat version` + +version: + #!/bin/bash + echo {{ version }} + +release: + #!/bin/bash + ./scripts/get_release_notes.py "{{ version }}" > release_notes.tmp + helm package helm-chart + gh release create "v{{ version }}" \ + --title "v{{version}}" \ + --notes-file release_notes.tmp \ + k8s-pages-{{ version }}.tgz + rm release_notes.tmp diff --git a/scripts/get_release_notes.py b/scripts/get_release_notes.py new file mode 100755 index 0000000..6084466 --- /dev/null +++ b/scripts/get_release_notes.py @@ -0,0 +1,35 @@ +#!/usr/bin/env -S uv run --quiet --script +# /// script +# requires-python = ">=3.10" +# /// + +import sys + + +def get_release_notes(version): + with open("CHANGELOG.md", "r") as f: + content = f.read() + + sections = content.split("\n## ") + # First section won't start with ## since it's split on that + sections = ["## " + s if i > 0 else s for i, s in enumerate(sections)] + + for section in sections: + if section.startswith(f"## {version}"): + return section.strip() + + return None + + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Usage: get_release_notes.py VERSION", file=sys.stderr) + sys.exit(1) + + version = sys.argv[1] + notes = get_release_notes(version) + if notes: + print(notes) + else: + print(f"Error: No release notes found for version {version}", file=sys.stderr) + sys.exit(1) diff --git a/version b/version index d00491f..227cea2 100644 --- a/version +++ b/version @@ -1 +1 @@ -1 +2.0.0