mirror of
https://github.com/umputun/reproxy.git
synced 2025-07-12 22:20:55 +02:00
some initial docs
This commit is contained in:
88
README.md
88
README.md
@ -1,36 +1,80 @@
|
||||
# docker-proxy
|
||||
# docker-proxy (dpx)
|
||||
|
||||
Simple edge HTTP(s) proxy for docker containers
|
||||
Simple edge HTTP(s) proxy for various providers (docker, static, file). One or more providers supply information
|
||||
about requested server, requested url and destination url.
|
||||
|
||||
Server can be FQDN, i.e. `s.example.com` or `*` (catch all). Requested url can be regex, for example `^/api/(.*)` and destination url
|
||||
may have regex matched groups, i.e. `http://d.example.com:8080/$1`. For the example above `http://s.example.com/api/something?foo=bar` will be proxied to `http://d.example.com:8080/something?foo=bar`.
|
||||
|
||||
Both HTTP and HTTPS supported for the server. For HTTPS static certificate can be used as well as automated
|
||||
ACME (Let's Encrypt) certificates. Optional assets server can be used to serve static files.
|
||||
|
||||
Starting dpx requires at least one provider defined. The rest of parameters are strictly optional and have sane default.
|
||||
|
||||
example with a static provider: `dbx --static.enabled --rule="example.com/api/(.*),https://api.example.com/$1"`
|
||||
|
||||
## Providers
|
||||
|
||||
### Static
|
||||
|
||||
This is the simplest provider defining all mapping rules directly in the command line (or environment). Multiple rules can be defined.
|
||||
Each rule is 2 or 3 comma-separated elements `[server,]sourceurl,destination`. For example:
|
||||
|
||||
- `^/api/(.*),https://api.example.com/$1` - proxy all request to any host/server with `/api` prefix to `https://api.example.com`
|
||||
- `example.com,/foo/bar,https://api.example.com/zzz` - proxy all requests to `example.com` and with `/foo/bar` url to `https://api.example.com/zzz`
|
||||
|
||||
## File
|
||||
|
||||
`dbx --file.enabled --file.name=config.yml`
|
||||
|
||||
example of `config.yml`:
|
||||
|
||||
```yaml
|
||||
- {server: "*", route: "^/api/svc1/(.*)", dest: "http://127.0.0.1:8080/blah1/$1"}
|
||||
- {server: "srv.example.com", route: "^/api/svc2/(.*)", dest: "http://127.0.0.2:8080/blah2/$1/abc"}
|
||||
- {server: "*", route: "/api/svc3/xyz", dest: "http://127.0.0.3:8080/blah3/xyz"}
|
||||
```
|
||||
## Docker
|
||||
|
||||
## Application Options
|
||||
|
||||
```
|
||||
Application Options:
|
||||
-l, --listen= listen on host:port (default: 127.0.0.1:8080) [$LISTEN]
|
||||
-t, --timeout= proxy timeout (default: 5s) [$TIMEOUT]
|
||||
--max= max response size (default: 64000) [$MAX_SIZE]
|
||||
-g, --gzip enable gz compression [$GZIP]
|
||||
-x, --header= proxy headers [$HEADER]
|
||||
--dbg debug mode [$DEBUG]
|
||||
-l, --listen= listen on host:port (default: 127.0.0.1:8080) [$LISTEN]
|
||||
-t, --timeout= proxy timeout (default: 5s) [$TIMEOUT]
|
||||
--max= max response size (default: 64000) [$MAX_SIZE]
|
||||
-g, --gzip enable gz compression [$GZIP]
|
||||
-x, --header= proxy headers [$HEADER]
|
||||
--dbg debug mode [$DEBUG]
|
||||
|
||||
ssl:
|
||||
--ssl.type=[none|static|auto] ssl (auto) support (default: none) [$SSL_TYPE]
|
||||
--ssl.cert= path to cert.pem file [$SSL_CERT]
|
||||
--ssl.key= path to key.pem file [$SSL_KEY]
|
||||
--ssl.acme-location= dir where certificates will be stored by autocert manager (default: ./var/acme) [$SSL_ACME_LOCATION]
|
||||
--ssl.acme-email= admin email for certificate notifications [$SSL_ACME_EMAIL]
|
||||
--ssl.http-port= http port for redirect to https and acme challenge [$SSL_HTTP_PORT]
|
||||
|
||||
assets:
|
||||
-a, --assets.location= assets location [$ASSETS_LOCATION]
|
||||
--assets.root= assets web root (default: /) [$ASSETS_ROOT]
|
||||
-a, --assets.location= assets location [$ASSETS_LOCATION]
|
||||
--assets.root= assets web root (default: /) [$ASSETS_ROOT]
|
||||
|
||||
docker:
|
||||
--docker.enabled enable docker provider [$DOCKER_ENABLED]
|
||||
--docker.host= docker host (default: unix:///var/run/docker.sock) [$DOCKER_HOST]
|
||||
--docker.exclude= excluded containers [$DOCKER_EXCLUDE]
|
||||
--docker.enabled enable docker provider [$DOCKER_ENABLED]
|
||||
--docker.host= docker host (default: unix:///var/run/docker.sock) [$DOCKER_HOST]
|
||||
--docker.network= docker network (default: default) [$DOCKER_NETWORK]
|
||||
--docker.exclude= excluded containers [$DOCKER_EXCLUDE]
|
||||
|
||||
file:
|
||||
--file.enabled enable file provider [$FILE_ENABLED]
|
||||
--file.name= file name (default: dpx.conf) [$FILE_NAME]
|
||||
--file.interval= file check interval (default: 3s) [$FILE_INTERVAL]
|
||||
--file.delay= file event delay (default: 500ms) [$FILE_DELAY]
|
||||
--file.enabled enable file provider [$FILE_ENABLED]
|
||||
--file.name= file name (default: dpx.yml) [$FILE_NAME]
|
||||
--file.interval= file check interval (default: 3s) [$FILE_INTERVAL]
|
||||
--file.delay= file event delay (default: 500ms) [$FILE_DELAY]
|
||||
|
||||
static:
|
||||
--static.enabled enable static provider [$STATIC_ENABLED]
|
||||
--static.rule= routing rules [$STATIC_RULES]
|
||||
--static.enabled enable static provider [$STATIC_ENABLED]
|
||||
--static.rule= routing rules [$STATIC_RULES]
|
||||
|
||||
Help Options:
|
||||
-h, --help Show this help message
|
||||
|
||||
-h, --help Show this help message
|
||||
|
||||
```
|
@ -24,7 +24,7 @@ var opts struct {
|
||||
TimeOut time.Duration `short:"t" long:"timeout" env:"TIMEOUT" default:"5s" description:"proxy timeout"`
|
||||
MaxSize int64 `long:"m" long:"max" env:"MAX_SIZE" default:"64000" description:"max response size"`
|
||||
GzipEnabled bool `short:"g" long:"gzip" env:"GZIP" description:"enable gz compression"`
|
||||
ProxyHeaders []string `short:"x" long:"header" env:"HEADER" description:"proxy headers"`
|
||||
ProxyHeaders []string `short:"x" long:"header" env:"HEADER" description:"proxy headers" env-delim:","`
|
||||
|
||||
SSL struct {
|
||||
Type string `long:"type" env:"TYPE" description:"ssl (auto) support" choice:"none" choice:"static" choice:"auto" default:"none"` //nolint
|
||||
@ -44,7 +44,7 @@ var opts struct {
|
||||
Enabled bool `long:"enabled" env:"ENABLED" description:"enable docker provider"`
|
||||
Host string `long:"host" env:"HOST" default:"unix:///var/run/docker.sock" description:"docker host"`
|
||||
Network string `long:"network" env:"NETWORK" default:"default" description:"docker network"`
|
||||
Excluded []string `long:"exclude" env:"EXCLUDE" description:"excluded containers"`
|
||||
Excluded []string `long:"exclude" env:"EXCLUDE" description:"excluded containers" env-delim:","`
|
||||
} `group:"docker" namespace:"docker" env-namespace:"DOCKER"`
|
||||
|
||||
File struct {
|
||||
@ -56,7 +56,7 @@ var opts struct {
|
||||
|
||||
Static struct {
|
||||
Enabled bool `long:"enabled" env:"ENABLED" description:"enable static provider"`
|
||||
Rules []string `long:"rule" env:"RULES" description:"routing rules"`
|
||||
Rules []string `long:"rule" env:"RULES" description:"routing rules" env-delim:","`
|
||||
} `group:"static" namespace:"static" env-namespace:"STATIC"`
|
||||
|
||||
Dbg bool `long:"dbg" env:"DEBUG" description:"debug mode"`
|
||||
|
Reference in New Issue
Block a user