1.0.3 • Published 1 year ago

bunproxy v1.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

Bun Proxy

Domain-based Port forwarder with http&websockets supported, proxy server is powerd by Bun.

Quick Setup

bunx pm2 start --name bunproxy bunx -- bunproxy 8228 bunx pm2 monit

Use cases

1. Port forwarding with Caddy + bunproxy

-> browser request: https://host-port.example.com -> Caddy listen on https://*.example.com/ with auto TLS -> Set Host: $host:$port header -> proxy to http://bunproxy -> http://host:port -> served contents

2. Reverse proxy

-> browser request: https://service.host.example.com -> Caddy listen on https://*.host.example.com/ with auto TLS -> Set Host: localhost:$port header to the service. -> proxy to http://bunproxy -> http://localhost:port -> served contents

Setup

Example:1 Setup your HTTPS Local network port forwarder with Caddy + bunproxy

  1. Create Caddyfile

Caddyfile

*.fbi.com {
	tls internal
	# match host
	@proxyhostport header_regexp hostport Host ([A-Za-z0-9-]+?)-([0-9]+)\.fbi.com
  @proxyhostonly header_regexp hostport Host ([A-Za-z0-9-]+?)\.fbi.com
  #
	reverse_proxy @proxyhostport http://bunproxy:9097 {
		header_up Host {re.hostport.1}:{re.hostport.2}
	}
	reverse_proxy @proxyhostonly http://bunproxy:9097 {
		header_up Host {re.hostport.1}:80
	}
	reverse_proxy http://bunproxy:9097
}

docker-compose.yml

services:
  caddy:
    image: caddy
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
    ports: [443:443, 80:80]
  bunproxy:
    restart: always
    build: .
    image: ghcr.io/snomiao/bunproxy
    # dev
    working_dir: /src
    command: bun --hot /src/index.ts
    volumes:
      - ./:/src
    environment:
      - PORT=9097
  nginx:
    image: nginx
  pong:
    image: caddy
    command: caddy respond --listen :2000-2004 "I'm server {{.N}} on port {{.Port}}"

Test your services by:

# without port, defaults to 80
curl -k https://nginx.fbi.com:8443

# with port
curl -k https://nginx-80.fbi.com:8443

# with port
curl -k https://pong-2000.fbi.com:8443

# with port
curl -k https://pong-2001.fbi.com:8443

Development

To install dependencies:

bun install

To run:

bun run index.ts

This project was created using bun init in bun v1.0.22. Bun is a fast all-in-one JavaScript runtime.

Caddy config

License

MIT

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago