Main consideration is backward compatibility. example.com should be treated as an exact
match, where possible. So current order is: exact host, regex host, * or "".
Regex matches are cached for better performance, cache is invalidated once mappings are refreshed.
In some cases proxy should sanitize incoming headers. --drop-header and $DROP_HEADERS set list of headers (keys) and those headers removed from the request.
This is an attempt to address #108
Instead of dedicated support of header`s removal it allows to return a flag indicating plugin's full control over headers. With this flag set, the conductor won't mix response headers with originals but rather will count on a plugin to provide all the headers.
* wip
* resolve merge artifacts
* full coverage for conductor
* wire plugin conductor to main and proxy
* wip, with separate match handler
* split matching logic with another handler, add initial docs
* move parts of proxy to handlers, add tests
* add headers in to be sent to proxied url
* merged from master
* add example with docker compose
* supress excesive debug reporting 0-9 disabled in docker
* add plugin tests
* randomize test port
* lint: minor warns
* lint: err shadow
* support reproxy.N.something labels for docker #78
* lint: suppress false positive
* update linter in ci
* update readme
* add test for failed container parse
* discovery support for multiple matches
* switch proxy matcher usage, add random selection
* fix multi-match logic
* pass match picker func
* simplify rand picker
* update health params and docs
* fix early termination on discovery multi-match
* add grouping of sorted matches in sorted result
* add mention of live check to readme
* detect in-container and set listen to 0.0.0.0
* simplify default address logic
don't change if user defined, use 127.0.0.1:8080 for non-docker and 0.0.0.0:8080 for in-docker only if nothing set
* add dynamic default to redir http port
* add docs about dynamic defaults
* add ssl example
* lint: params warn