chgeuer

chgeuer

Which library / approach would be advisable for building an MITM-style HTTP(s) Proxy, i.e. for intercepting outgoing web traffic? Effectively inspect (and do side effects) based on outgoing traffic.

I found GitHub - houli/http-proxy: A HTTP(S) Proxy written in Elixir · GitHub (9 years old, work in progress) and GitHub - KazuCocoa/http_proxy: http proxy with Elixir. wait request with multi port and forward to each URIs · GitHub, but there’s no real getting-started sample. Given that a proxy isn’t just a regular web server, I’m not sure this thing can easily be plugged into a web server like Cowboy/Bandit/Phoenix…

Thanks, Christian

Showing Posts 1 to 8

D4no0

D4no0

How so? The requirements may widely wary, however I can see how you could have a combination of phoenix and a http client.

sorax

sorax

do you know https://github.com/tallarium/reverse_proxy_plug?
we use it for “shielding” an old website and injecting css into the page

kind regards, robert

arcanemachine

arcanemachine

Not sure if this is helpful, but I use this service a lot for finding Elixir packages:

chgeuer

chgeuer OP

Thanks @sorax . I had a look at that, but it seems targeted as “reverse proxy”, like NGINX, right? That looked like a component I can put in front of my web server application, and route incoming requests different ways, like an API Gateway.

I’m looking for a component used by a web browser, before going out to the Internet. Is reverse_proxy_plug usable for that, too? The proxy protocol looks slightly different than HTTP

chgeuer

chgeuer OP

Fully agree that I want the proxy server to run on a solid foundation (like Phoenix). The thing that’s unclear is how to host a component that talks the proxy protocol to the client, instead of plain HTTP.

chgeuer

chgeuer OP

Thanks for the link, wasn’t aware of the search capabilities of elixir-toolbox.dev… However, as far as I can see, all these are either proxies for special protocols (SIP, Kafka, Telegram MProto) or are ‘reverse proxies’ (like nginx).

foucist

foucist

I guess the confusion is reverse_proxy_plug could be considered a forward proxy given that it would be used to access an external website. However, it can still be considered a “reverse proxy” between the user & the elixir server.

jstimps

jstimps

It sounds like you’re looking for an http server that supports the CONNECT protocol, such as the standalone app squid.

I haven’t personally seen any Erlang or Elixir http servers that have explicit documented support of HTTP CONNECT for proxying, but cowboy does appear to support enable_connect_protocol for Websockets on HTTP2. Might take a bit of experimentation with cowboy’s configuration to determine if it suits your need.

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New
ChrisAmelia
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication): toke...
New
dillonoconnor
Is there any way to avoid the Hologram compiler running when using iex? It seems like the front-end code could potentially be disregarded...
New
thiagogsr
** (ArgumentError) expected :max_attempts to be a positive integer, got: {:@, [line: 10, column: 19], [{:max_attempts, [line: 10, column:...
New
unaware8150
Hello folks! So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews