Proxy
Proxy is a Plug module for Elixir that allows you to easily forward HTTP requests from one path to another URL while preserving subpaths. It simplifies the process of setting up reverse proxies in your Elixir applications.
Features
- Forward HTTP requests to a specified URL.
- Preserve subpaths in forwarded requests.
- Automatically handle and forward headers and request bodies.
- Simple macro-based syntax for easy integration into Plug routers.
Installation
Add proxy to your list of dependencies in mix.exs:
defp deps do
[
{:proxy, "~> 0.1.0"},
]
end
Then run mix deps.get to fetch the dependencies.
Usage
To use the Proxy module, first import it into your Plug router, and then use the proxy macro to define the paths you want to forward.
Example
defmodule MyRouter do
use Plug.Router
import Proxy
plug :match
plug :dispatch
proxy "/path", to: "https://localhost:8080"
match _ do
send_resp(conn, 404, "Oops!")
end
end
In this example, any request made to /path (e.g., /path/resource) will be forwarded to https://localhost:8080/resource.
Another Example
proxy "/api", to: "https://api.example.com"
This forwards requests like /api/resource to https://api.example.com/resource.
License
This project is licensed under the MIT License.