hapi-bouncer
Transaprent proxy. Pipe raw http traffic from incoming http requests to remote endpoints.
Proxy like substack bouncy, but builded on top of hapi.
- Supports https, and configurations via node-config-loader
- Can be used as hapi plugin.
- Can log requests/responses and payloads.
- Can partially substitute resources by path: you can mount many resources to one endpoint.
Example:
site1.com is localhost 127.0.0.1
site2.com is external host.
Requests (https or http):
- site1.com proxyfied to http://localhost:8007
- site1.com/rest proxyfied to https://localhost:8008/rest-some
- site1.com/some proxyfied to http://site2.com/some
- site1.com/cas proxyfied to http://localhost:8008/cas
Install:
npm i -g hapi-bouncer
Configuration:
All files placed in ./conf directory:
#_base#default-server.yml host: 0.0.0.0__push__: [connections]
If push directive exists: concat connections data from all config files in ./conf directory.
# ex2#default-server.yml connections: - # Proxy for http and https: from: https?://site1.example.com to: http://localhost:8080
# ex1#default-server.yml connections: - from: https?://site1.com to: http://localhost:8007 - from: https?://site1.com/rest to: http://localhost:8008/rest-some - from: https?://site1.com/some to: http://site2.com/some - from: https?://site1.com/sso to: http://localhost:8008/sso - from: https?://site1.com/cas to: http://localhost:8008/cas
; /etc/hosts
site1.com 127.0.0.1
SSL certificates:
ssl/server.crt
ssl/server.key
ssl/ca.crt
Running as server:
hapi-bouncer --config=conf --certs=ssl --verbose
Hapi plugin
const links: Link = from: 'http?://site1.com/rest' to: 'http://extsite.com/api' const proxyHapiPluginWithOptions = register: proxyHapiPlugin options: linksserver
Interfaces
// @flow