Base path via environment variable

This commit is contained in:
bartbutenaers 2025-03-08 21:47:50 +01:00
parent cf3c0b2eb5
commit a4a23e366a
5 changed files with 55 additions and 2 deletions

View File

@ -79,6 +79,16 @@ if [ ! \( -f "$letsencrypt_path/privkey.pem" -a -f "$letsencrypt_path/fullchain.
-keyout "$letsencrypt_path/privkey.pem" -out "$letsencrypt_path/fullchain.pem" 2>/dev/null -keyout "$letsencrypt_path/privkey.pem" -out "$letsencrypt_path/fullchain.pem" 2>/dev/null
fi fi
# build templates for optional BASE_PATH environment variable
python3 /usr/local/nginx/get_base_path.py | \
tempio -template /usr/local/nginx/templates/base_path.gotmpl \
-out /usr/local/nginx/conf/base_path.conf
# build templates for optional base_path in web manifest
python3 /usr/local/nginx/get_base_path.py | \
tempio -template /usr/local/nginx/templates/web_manifest.gotmpl \
-out /usr/local/nginx/conf/web_manifest.conf
# build templates for optional TLS support # build templates for optional TLS support
python3 /usr/local/nginx/get_tls_settings.py | \ python3 /usr/local/nginx/get_tls_settings.py | \
tempio -template /usr/local/nginx/templates/listen.gotmpl \ tempio -template /usr/local/nginx/templates/listen.gotmpl \

View File

@ -96,6 +96,7 @@ http {
gzip_types application/vnd.apple.mpegurl; gzip_types application/vnd.apple.mpegurl;
include auth_location.conf; include auth_location.conf;
include base_path.conf;
location /vod/ { location /vod/ {
include auth_request.conf; include auth_request.conf;
@ -235,9 +236,9 @@ http {
include proxy.conf; include proxy.conf;
} }
location ~* /api/.*\.(jpg|jpeg|png|webp|gif)$ { location ~* (?:/.*/)?api/.*\.(jpg|jpeg|png|webp|gif)$ {
include auth_request.conf; include auth_request.conf;
rewrite ^/api/(.*)$ /$1 break; rewrite (?:/.*/)?api/(.*)$ /$1 break;
proxy_pass http://frigate_api; proxy_pass http://frigate_api;
include proxy.conf; include proxy.conf;
} }
@ -299,6 +300,8 @@ http {
add_header Cache-Control "public"; add_header Cache-Control "public";
} }
include web_manifest.conf;
sub_filter 'href="/BASE_PATH/' 'href="$http_x_ingress_path/'; sub_filter 'href="/BASE_PATH/' 'href="$http_x_ingress_path/';
sub_filter 'url(/BASE_PATH/' 'url($http_x_ingress_path/'; sub_filter 'url(/BASE_PATH/' 'url($http_x_ingress_path/';
sub_filter '"/BASE_PATH/dist/' '"$http_x_ingress_path/dist/'; sub_filter '"/BASE_PATH/dist/' '"$http_x_ingress_path/dist/';

View File

@ -0,0 +1,10 @@
"""Prints the base path as json to stdout."""
import json
import os
base_path = os.environ.get("BASE_PATH", "")
result: dict[str, any] = {"base_path": base_path}
print(json.dumps(result))

View File

@ -0,0 +1,17 @@
{{ if .base_path }}
location = {{ .base_path }} {
return 302 {{ .base_path }}/;
}
location {{ .base_path }}/ {
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $http_host;
proxy_set_header X-Ingress-Path {{ .base_path }};
proxy_set_header Authorization "";
proxy_pass http:/{{ .base_path }}:5000/;
access_log off;
}
{{ end }}

View File

@ -0,0 +1,13 @@
{{ if .base_path }}
location ~ ^/.*-([A-Za-z0-9]+)\.webmanifest$ {
access_log off;
expires 1y;
add_header Cache-Control "public";
default_type application/json;
proxy_set_header Accept-Encoding "";
sub_filter_once off;
sub_filter_types application/json;
sub_filter '"start_url": "/"' '"start_url" : "{{ .base_path }}"';
sub_filter '"src": "/' '"src": "{{ .base_path }}/';
}
{{ end }}