You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$> gem install em-proxy
$> em-proxy
Usage: em-proxy [options]
-l, --listen [PORT] Port to listen on
-d, --duplex [host:port, ...] List of backends to duplex data to
-r, --relay [hostname:port] Relay endpoint: hostname:port
-s, --socket [filename] Relay endpoint: unix filename
-v, --verbose Run in debug mode
$> em-proxy -l 8080 -r localhost:8081 -d localhost:8082,localhost:8083 -v
The above will start em-proxy on port 8080, relay and respond with data from port 8081, and also (optional) duplicate all traffic to ports 8082 and 8083 (and discard their responses).
Simple port forwarding proxy
Proxy.start(:host=>"0.0.0.0",:port=>80,:debug=>true)do |conn|
conn.server:srv,:host=>"127.0.0.1",:port=>81# modify / process request streamconn.on_datado |data|
p[:on_data,data]dataend# modify / process response streamconn.on_responsedo |backend,resp|
p[:on_response,backend,resp]respend# termination logicconn.on_finishdo |backend,name|
p[:on_finish,name]# terminate connection (in duplex mode, you can terminate when prod is done)unbindifbackend == :srvendend
For more examples see the /examples directory.
SMTP Spam Filtering
Duplicating traffic
Selective forwarding
Beanstalkd interceptor
etc.
A schema-free MySQL proof of concept, via an EM-Proxy server: