Skip to content

Use nginx to redirect from local assets to the standard github live_endpoint #69

Open
@sjuerges

Description

@sjuerges

Is your feature request related to a problem? Please describe.
I want to keep a few things locally that get used very often, but I want to be able to try out everything else via the standard live_endpoint

Describe the solution you'd like
Well, I've built a solution and would like to suggest it here: I have modified the nginx config so that i reads as follows:

server {
        listen 80;

        set $v_filename nf;

        location ~ ^/(.*)$ {
                try_files $uri $uri/ @netboot;
                set $v_filename $1;
                root /assets;
                autoindex on;
        }

        location @netboot {
                return 302      https://github.com/netbootxyz/$v_filename;
        }
}

(code from serverfault i stumbled across some time ago and remembered for this: https://serverfault.com/questions/1099771/redirect-to-other-server-and-domain-if-file-not-found)

This lets me have my cake and eat it too. I can access stuff that isn't there locally, and the nginx sends a 302 to the "standard" live_endpoint url to the client, which then gets it there:

172.18.0.5 - - [03/Aug/2024:21:36:51 +0000] "HEAD /ubuntu-squash/releases/download/7-3e6e05f6/filesystem.squashfs HTTP/1.1" 302 0 "-" "curl/8.4.0"
172.18.0.5 - - [03/Aug/2024:21:36:51 +0000] "GET /ubuntu-squash/releases/download/7-3e6e05f6/filesystem.squashfs HTTP/1.1" 302 145 "-" "curl/8.4.0"

But, i can also access stuff that was downloaded:

172.18.0.5 - - [03/Aug/2024:21:34:45 +0000] "GET /ubuntu-squash/releases/download/5-6efd1d75/vmlinuz HTTP/1.1" 200 11656064 "-" "iPXE/1.21.1+ (g5a9f4)"
172.18.0.5 - - [03/Aug/2024:21:34:46 +0000] "GET /ubuntu-squash/releases/download/5-6efd1d75/initrd HTTP/1.1" 200 46925888 "-" "iPXE/1.21.1+ (g5a9f4)"

Describe alternatives you've considered
I was messing about with caching and i found it ... tedious, to say the least. This is, imho, elegant, ties into the local asset management and SHOULDNT break anything.

Additional context
None. I think its fairly obvious what is happening here. Feel free to contact me for details if anything is unclear ;)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions