-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Alternatives to http-proxy #1687
Comments
Thanks @paulrutter for this snippet, I was looking into migrating some old code too, and I came up with this using fetch API async function handler(req: Request): Promise<Response> {
const parsedUrl = new URL(req.url);
// transform request
parsedUrl.host = API_HOST;
// add forwarded headers
req.headers.append("x-forwarded-for", req.headers.get("host") ?? DEFAULT_HOST);
// fetch should handle pipeing ReadStream/WriteStream
return fetch(new Request(parsedUrl, req));
} It's pretty simple, but I believe its extendable too to add extra pre/post processing if needed. Currently I'm using this only for dev. |
@med8bra thanks, that seems pretty easy as well. It doesn't pipe the proxied response (headers, statusCode, body) though, but that could be added probably. |
Another thing to handle in my code snippet would be request timeout and set-cookie headers, which would need to be rewritten (if cookies are relevant to the proxy). Http-proxy does both as well. |
I've been using this module for a long time for http proxying, but since it's no longer maintained i was looking into alternatives.
For what it's worth, sharing my findings here.
Using node basic modules
My usecase: i have a
expressjs
app for which i want to proxy all requests to a Node process running on the same machine, on a different port. This code snippet shows how to proxy request/response including error handling.This snippet doesn't offer everything this module offers, but it's easily extendable to add features like adding/removing headers from the request or response. It's all plain node code, no additional module involved.
Other proxy modules or ways to do it
I hope this is helpful to others moving away from
http-proxy
.The text was updated successfully, but these errors were encountered: