Christoph Schug a20783287c fix: fix Traefik 3 host rule matching
The function `HostHost` is an obvious typo, such a function does not
exist, most likely just `Hosts` is meant here.

Furthermore, Trafik 3 doesn't use the Gorilla Mux framework
anymore, therefore the matching using curly brace syntax like in
`{subhost:[a-z]+}` isn't supported anymore. For details, see [1].
Alas, the final Traffic 2 to 3 migration document dropped this crucial
information but at least all of those many examples using this method
which were in the Trafik 2 documentation were removed from the Traefik 3
documentation.

Also `[a-z]+` does not match all valid sub-domains as specified per RFC
1123 [2], and needs to be enhanced to support hyphen characters within a
single DNS label as well (but not at the start or the end of a label).
This is also a requirement for i18n domains in their ACE representation.

Actually the regular expression can be made even more strict to comply
with length limitations as defined in RFC 2181 [3] but this would require
pretty resource-intense lookarounds in the regular expression, therefore
those should be neglected here.

As we are doing regular expression match anyway, the `Host` function can
be dropped. It adds redundancy to the configuration and only would make
sense from a performance point of view, if the vast majority of requests
would lack any sub-domain.

Last but not least, the Trafik documentation isn't clear at all, whether
any potential port number is being stripped from the `Host` request header.
From empiric testing with Traefik 3.0.1 that's apparently the case, but
as it isn't a documented feature, we rather accept potential ports as
well.

Same when it comes to case-sensitivity. From testing it looks like the
hostname is always forced to lower-case chararcters, but strangely
enough even the official documentation contains an example which
suggests enabling case-insensitive mode for regular expression matching
using `(?i)`. Therefore we better stick with that one as well.

[1] https://traefik.io/blog/traefik-proxy-3-0-scope-beta-program-and-the-first-feature-drop/
[2] https://datatracker.ietf.org/doc/html/rfc1123
[3] https://datatracker.ietf.org/doc/html/rfc2181
2024-06-02 19:43:03 +02:00
2024-03-26 11:37:01 +01:00
2024-03-08 14:14:41 +01:00
2024-03-26 12:06:37 +01:00
2021-06-11 09:05:33 +02:00
2023-09-26 15:15:57 +02:00
2023-08-28 11:55:26 +02:00

Christian's Boilerplates

Welcome

Hey, there!

Im Christian, and Im passionate about creating educational tech content for IT Pros and Homelab nerds.

This Repository Boilerplates is my personal template collection. Here you'll find templates, and configurations for various tools, and technologies.

⚠️ Be aware, products can change over time. I do my best to keep up with the latest changes and releases, but please understand that this wont always be the case.

I created them as free resources to be used in your specific use cases. If you're searching for detailed, in-depth tutorials on some tools or technologies, check out my YouTube Channel.

Contribution

If youd like to contribute to this project, reach out to me on social media or Discord, or create a pull request for the necessary changes.

Other Resources

  • Dotfiles - My personal configuration files on macOS
  • Cheat-Sheets - Command Reference for various tools and technologies
  • Videos - Documentation and project files for all my video tutorials on YouTube
  • Homelab - This is my entire Homelab documentation, and configurations for infrastructure, applications, networking, and more.

Support me

Creating high-quality videos and valuable resources that are accessible to everyone, free of charge, is a huge challenge. With your contribution, I can dedicate more time and effort into the creation process, which ultimately enhances the quality of the content. So, all your support, by becoming a member, truly makes a significant impact on what I do. And youll also get some cool benefits and perks in return, as a recognition of your support.

Remember, supporting me is entirely optional. Your choice to become a member or not won't change your access to my videos and resources. You are also welcome to reach out to me on Discord, if you have any questions or feedback.

https://www.patreon.com/christianlempa

Description
This is my personal template collection. Here you'll find templates, and configurations for various tools, and technologies.
Readme MIT 16 MiB
Languages
HCL 94.4%
Ruby 5.2%
CSS 0.3%