๐พ Archived View for bbs.geminispace.org โบ u โบ alexlehm โบ 3351 captured on 2024-06-16 at 18:35:37. Gemini links have been rewritten to link to archived content
โฌ ๏ธ Previous capture (2024-05-10)
โก๏ธ Next capture (2024-07-09)
-=-=-=-=-=-=-
Re: "Reverse proxy for gemini vhosts"
@norayr the problem is that the proxy has to determine the hostname in the unencrypted part of the TLS protocol, which apparently works, but it unusual (the solution provided by relayd seems to work)
2023-07-21 ยท 11 months ago
๐ Addison ยท 2023-07-21 at 18:06:
โ => Here's an NGINX config that uses SNI to do what you're asking. Cheers
๐ norayr ยท 2023-07-21 at 20:39:
relayd? hmmm... did anyone already configure some capsules like that? can i find some example configurations somewhere?
๐ norayr ยท 2023-07-21 at 20:45:
omg let me see!
๐ป mediocregopher [OP...] ยท 2023-07-22 at 06:16:
@norayr I'm not sure why relayd was brought up, but both the link about traefik that I posted earlier and the nginx config that Addison posted should be able to help
๐ค alexlehm ยท 2023-07-22 at 09:40:
@mediocregopher sorry that was mentioned somewhere else on the same topic, I confused the "channels"
๐ป mediocregopher [OP...] ยท 2023-07-24 at 17:32:
To follow up: I wasn't able to do transparent TLS proxying in rust+tokio due to the tokio_rustls crate not supporting it, ended up implementing it myself
โ https://github.com/rustls/tokio-rustls/issues/6
๐ norayr ยท 2023-07-26 at 06:42:
thank you for sharing. i looked at your code and issue comments and tried to understand it all. it looks like you have made a significant effort with a relatively new to you language, thank you for that too.
let's see how it continues. we need a reverse tls proxy tool.
i perhaps would use such a tool with more enjoyment if i knew it is written in go, since i percieve it as more simple and modernistic language (from what we have in the mainstream) just like i perceive gemini to be simple and modernistic. but rust is fine.
๐ป mediocregopher [OP...] ยท 2023-07-27 at 06:14:
As someone who primarily writes go, I totally agree with you :) but the project I'm working on is in rust, to help me expand my skillset a bit. I think the same strategy I've employed here could be done in go even easier, using a TeeReader
๐ norayr ยท 2023-07-27 at 10:25:
oh so nice to hear it. well, let's see if they accept your changes, and if not then i am glad there is a go project you can contribute to.
๐ norayr ยท 2023-07-27 at 21:59:
i am following the issue and i see you created another branch. waiting to get the solution, hopefully it'll compile for me, and configure several virtual hosts for gemini on my server.
then i would move everything possible to gemini, and proxy with kineto.
๐ป mediocregopher [OP...] ยท 2023-08-09 at 15:01:
Some final closure on this thread, thanks for all the input everyone!
โ mediocregopher.com/posts/domani.gmi
๐ norayr ยท 2023-08-10 at 21:33:
so what happened in issue #6 of tokio-rustls? how did it end? did they accept your changes?
what is the solution if i want to do the same, i. e. host several of my gemini domains on one machine?
๐ norayr ยท Jan 04 at 23:12:
@mediocregopher, i tried the traefik configuration inspired by what you linked:
i struggled to understand your configuration actually. my understanding is that traefik should listen on 1965 and redirect based on SNI to let's say 1966 or 1967 - to other ports where gemini servers that serve different domains are listening.
so i tried this:
entryPoints: gemini: address: ":1965" tcp: routers: capsule1: entrypoints: - "gemini" rule: "HostSNI(`norayr.am`)" service: "norayr" tls: passthrough: true capsule2: entrypoints: - "gemini" rule: "HostSNI(`xn--y9a5bft.xn--y9a3aq`)" service: "sona" tls: passthrough: true services: norayr: loadBalancer: servers: - address: "127.0.0.1:1966" sona: loadBalancer: servers: - address: "127.0.0.1:1967"
i have properly configured norayr.am on 1966, and it works if i go to it separately.
however when i enter just gemini://norayr.am, Lagrange sees that Traefik is providing its own default certificate ("CN = TRAEFIK DEFAULT CERT") instead of allowing TLS passthrough.
how would you recommend to change my configuration?
๐ป mediocregopher [OP...] ยท Jan 05 at 07:58:
@norayr The post I linked to wasn't written by me, I've never used traefik personally, so I don't think I can be much help here. Maybe you're using a newer/older version of traefik that expects a different configuration?
๐ norayr ยท Jan 05 at 14:14:
@mediocregopher would you suggest using tokio-rustls you patched? would you feel comfortable to mention a configuration example for my usecase?
๐ป mediocregopher [OP...] ยท Jan 05 at 17:04:
@norayr the tokio-rustls patch is for a rust library, it's not an actual application which can be used as-is. You would need to code your own which incorporates it.
I used that library as part of this project:
_Technically_ you could use Domani in the way you're wanting to, given a specific configuration. I've been using Domani myself to serve my HTTP(s) and gemini sites for a few months now and haven't noticed any issues, but I wouldn't say it's stable yet. There's still quite a few changes I want to make to it, and I haven't gotten around to generating release binaries for it yet so you'd need to compile it yourself.
๐ norayr ยท Jan 09 at 13:53:
ok i used gmid for reverse proxy and was able to redirect to 2 different molly browns for a test.
Reverse proxy for gemini vhosts โ Reverse proxy for gemini I'm looking into writing a reverse proxy server which supports Gemini. ideally I'd like it to work like an HTTP reverse proxy like nginx or caddy, where it directs requests to different backend servers depending on the hostname. The problem is... is this even really possible, given that client certs are a thing? How can the proxy serve the connection long enough to figure out a hostname, and still proxy it to the backend server with...
๐ฌ mediocregopher [...] ยท 27 comments ยท 2023-07-18 ยท 11 months ago