kieraneglin

kieraneglin

I’m looking to set up an Elixir/Phoenix app in front of an existing application and have this app act as a queuing system during high load events. This is probably never going to see real-world action as I’m mostly looking to learn more about this side of things.

I’ve never created an application to act as a reverse proxy but it seems like something Elixir/Erlang would handle well. Is there a recommended way to handle this? Any packages/articles to handle this would be appreciated!

Showing Posts 1 to 3

cmkarlsson

cmkarlsson

A reverse proxy behind apache/nginx is very common. I run a couple of deployments like this where I have a phoenix application mixed in among normal php apps.

For normal HTTP/HTTPs traffic I’ve used both apache and nginx but I had problems getting apache work with websockets (I did not spend too much time on it though).

In apache you need the following configuration:

<VirtualHost *:443>
   ...
   ProxyPass "/yourapp" http://127.0.0.1:4000/
   ProxyPassReverse "/yourapp" http://127.0.0.1:4000/
   ...
</VirtualHost>

And you need the apache mod_proxy module (mox_proxy_http mod_proxy_wstunnel)

For nginx this can be achieved with (and this includes web sockets):

server {
...
  
   location /yourapp { 
      ...
      proxy_http_version 1.1;
    
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-Cluster-Client-Ip $remote_addr;

      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      proxy_pass http://localhost:3000;
     ...
  }
}

You also need to configure your phoenix endpoint (Phoenix.Endpoint — Phoenix v1.8.8)
Especially url: [host: "your.host.name", path: "/yourapp", port: 80]
The path is what you use in the ProxyPass directive and the port is the port apache/nginx is running on.

I wish I had saved the sources of this information, then you could read a bit more about it. I was certain that phoenix official documentation had a chapter on reverse proxy with nginx but couldn’t find it.

rjk

rjk

There is a “plug” you can use (middleware for the phoenix router pipeline) which can do this for you, see: reverse_proxy_plug/README.md at master · tallarium/reverse_proxy_plug · GitHub

Have fun with it! :slight_smile:

jwoods1

jwoods1

If you want simple try Caddy server this was way easier to get started with when I compare it to Apache or Nginx

— 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
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
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
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
mnkhod
So i have been using ash framework for a while and i love it. However currently the issue im having with ash framework is the error handl...
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
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
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
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
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

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews