@squarecloud/http-proxy
![bundle](https://img.shields.io/bundlephobia/minzip/@squarecloud/http-proxy?style=flat&colorA=18181B&colorB=2563eb)
A Full-Featured HTTP and WebSocket Proxy for Node.js forked from http-party/node-http-proxy.
This fork adds the following features:
- Dependencies updates & security fixes.
- Websocket close before response fixed.
- Memory leak fixed when client closes prematurely.
- Add support for Lookup option. Remove old followRedirects option.
- Support for modifying content of websocket streams.
- Respect NODE_TLS_REJECT_UNAUTHORIZED environment variable.
- Fix for issues when using an Agent, fix the type error when req.socket is undefined.
- Fixed bug when http:/ isn't replaced with: http://
- Fixed X-Forwarded-* not capitalized.
Inspired by the project Ambassify project.
Usage
Install package:
npm install @squarecloud/http-proxy
yarn add @squarecloud/http-proxy
pnpm install @squarecloud/http-proxy
bun install @squarecloud/http-proxy
Create proxy:
const { createServer } = require("node:http");
const { createProxyServer } = require("@squarecloud/http-proxy");
const proxy = createProxyServer({});
const target = "http://example.com";
const server = createServer(async (req, res) => {
try {
await proxy.web(req, res, { target });
} catch (error) {
console.error(error);
res.statusCode = 500;
res.end("Proxy error: " + error.toString());
}
});
server.listen(80, () => console.log("Proxy is listening on http://localhost"));
Example with WebSocket:
const { createServer } = require("node:http");
const { createProxyServer } = require("@squarecloud/http-proxy");
const proxy = createProxyServer({ ws: true });
const target = "ws://example.com";
const server = createServer(async (req, res) => {
});
server.on("upgrade", async (req, socket, head) => {
try {
await proxy.ws(req, socket, head, { target });
} catch (error) {
console.error(error);
socket.end();
}
});
server.listen(80, () => console.log("Proxy is listening on http://localhost"));
Some options:
Checkout http-party/node-http-proxy for more options and examples.
Development
- Clone this repository
- Install latest LTS version of Node.js
- Install dependencies using
npm install
- Run interactive tests using
npm run test
License
Published under MIT License.
Made with 💙 & Supported by Square Cloud | A hosting company.