https://github.com/montag451/rlproxy
A small TCP proxy with rate limiting capability
https://github.com/montag451/rlproxy
bandwidth-limiter bandwidth-limiting go golang proxy rate-limit rate-limiter rate-limiting tcp tcp-proxy throttler throttling token-bucket
Last synced: 8 months ago
JSON representation
A small TCP proxy with rate limiting capability
- Host: GitHub
- URL: https://github.com/montag451/rlproxy
- Owner: montag451
- License: mit
- Created: 2022-03-17T09:10:52.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2023-10-26T10:20:47.000Z (over 2 years ago)
- Last Synced: 2025-01-16T16:33:02.574Z (over 1 year ago)
- Topics: bandwidth-limiter, bandwidth-limiting, go, golang, proxy, rate-limit, rate-limiter, rate-limiting, tcp, tcp-proxy, throttler, throttling, token-bucket
- Language: Go
- Homepage:
- Size: 80.1 KB
- Stars: 8
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Description #
`rlproxy` is a small TCP proxy with rate limiting capability. It uses
a [token bucket](https://en.wikipedia.org/wiki/Token_bucket) algorithm
to apply a rate limit on the bandwidth allocated to downstream
clients. The rate limit can be applied globally across all downstream
clients or per client.
# Usage #
`rlproxy` can be configured using command line flags or a
configuration file or both. Type `rlproxy -h` to find out the flags
supported by `rlproxy`. Settings specified using command line flags
take precedence over settings in the configuration file. The
configuration file can be a JSON file with the following format:
``` json
{
"name": "my-beloved-app",
"addrs": [
"127.0.0.1:12000"
],
"upstream": "127.0.0.1:12001",
"rate": "10M",
"burst": "64KiB",
"per_client": false,
"no_splice": false,
"buf_size": "1 Mi",
"logging": {
"level": "info",
"console": {
"enabled": true,
"pretty": true,
"use_stderr": false
},
"syslog": {
"enabled": false,
"facility": "local0"
}
}
}
```
or a YAML file:
``` yaml
name: my-beloved-app
addrs:
- 127.0.0.1:12000
upstream: 127.0.0.1:12001
rate: 10M
burst: 64KiB
per_client: false
no_splice: false
buf_size: 1 Mi
logging:
level: info
console:
enabled: true
pretty: true
use_stderr: false
syslog:
enabled: false
facility: local0
```