{"_id":"dynamic-reverse-proxy","_rev":"39-abdf68914a41a9322603718dca6fc163","name":"dynamic-reverse-proxy","dist-tags":{"latest":"0.7.0-alpha2","alpha":"0.7.0-alpha3"},"versions":{"0.1.0":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","version":"0.1.0","repository":{"url":"git://github.com/softek/dynamic-reverse-proxy.git"},"dependencies":{"http-proxy":"0.8.3","winston":"0.6.2"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"adunkman","email":"andrew@dunkman.org"},"_id":"dynamic-reverse-proxy@0.1.0","_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"62839b7f794e282b9464097ee7cb329f9cc36b35","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.1.0.tgz","integrity":"sha512-yaMslhCbNGT+m8ZWwxM4ahvu2OV8TgsQaIFt1jjUl+WpN1KdwkD8LkorLNdd/eoAA7dDbikM0bBs/tHxu3wtZQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE22LNr0KpA3KPLGj0MlGYeuR3IUzbh07fAXnmbH+CVNAiEAvAta8FhiMxngu2OLxBy05ywxXqzBJM+fH62VsQkm+wI="}]},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"}],"directories":{}},"0.2.0":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","version":"0.2.0","repository":{"url":"git://github.com/softek/dynamic-reverse-proxy.git"},"dependencies":{"http-proxy":"0.8.3","winston":"0.6.2"},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_npmUser":{"name":"adunkman","email":"andrew@dunkman.org"},"_id":"dynamic-reverse-proxy@0.2.0","_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"080626d3ac68aa3f67f17878d5cc3f1a2a91579b","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.2.0.tgz","integrity":"sha512-/fOd+/niJk9+EG5kDwbWHQwMsnk8jlYUWuxKHh5D1xi12N9uFYwrH9TKdMn747I/AOlsAbB7Nrcuo0mg/S8v4g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCz08PG7SBAcBmDbCccGlvYXjPmtHX46+nRjCdrTcM1qgIhAJl53p6xTG6yb9rF52wrDhlBiFdB/lDAFPRYaklWt9Oe"}]},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"}],"directories":{}},"0.3.0":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","version":"0.3.0","repository":{"url":"git://github.com/softek/dynamic-reverse-proxy.git"},"dependencies":{"http-proxy":"0.8.3"},"engines":{"node":"*"},"_npmUser":{"name":"adunkman","email":"andrew@dunkman.org"},"_id":"dynamic-reverse-proxy@0.3.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"7d93e5329dee0849f6847767c8eb419ce4e0ef3f","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.3.0.tgz","integrity":"sha512-PGZBOFCmSYpiE2NP4yF3sRruCN8AjFhWGWyTHz2EFOyEFavrPK0YLS3vOtrWSlKWhXN0KPgjCGHaFmj9TseHdQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCF9AnbSrplS3ZL3TGnW98ZSKMxoO1UYRyzvrAWsEhaAIgTTaNDChQjxkaZNP4EZo7jDr0bqM6SAiPklwE8I2HMqI="}]},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"}],"directories":{}},"0.4.0":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","version":"0.4.0","repository":{"url":"git://github.com/softek/dynamic-reverse-proxy.git"},"dependencies":{"http-proxy":"0.8.3"},"engines":{"node":"*"},"_npmUser":{"name":"adunkman","email":"andrew@dunkman.org"},"_id":"dynamic-reverse-proxy@0.4.0","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"8ff4c179ffeda7ed2469f6b69b4326980c32d758","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.4.0.tgz","integrity":"sha512-rU8FT+VMboEFLAYJnOHwxs7PhLMwzItpwhSWOQeIIufKJQVTeDNdgeMKMifRsn0zrGefBOP7/ME2Ww+sHRsMoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRIcbH1mlTuKOcAh2P3LJwWKNKeBlxiWEzqJB3Fik2SAIhAKufnYWWQ8pN37IB+2djQ3YEgVyghIDlYcLnnR0xbWNc"}]},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"}],"directories":{}},"0.4.1":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","version":"0.4.1","repository":{"url":"git://github.com/softek/dynamic-reverse-proxy.git"},"dependencies":{"http-proxy":"0.8.3"},"engines":{"node":"*"},"_id":"dynamic-reverse-proxy@0.4.1","description":"A reverse proxy built on [http-proxy](https://github.com/nodejitsu/node-http-proxy) that is configured by REST.","dist":{"shasum":"541659888ea6fde0d102787a3d542d12da5a133a","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.4.1.tgz","integrity":"sha512-7/e/MZEnHZ+aGDfJZcGBiJA76Q65wnl0uv/I8sLPC8b6A3hDqdB1DaIULVcO3ZH45ev5l3YX0E1bD1T3bT/AHQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHEwrDjP5SbcfbXwYw9MGuQaKr9ZUk5+pP0c7bPQ6EZSAiBq0jcHxB6uIAD0A45NQUzguCrDiJDqgxC06+zcsIj9ug=="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"adunkman","email":"andrew@dunkman.org"},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"}],"directories":{}},"0.4.2":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","version":"0.4.2","repository":{"url":"git://github.com/softek/dynamic-reverse-proxy.git"},"dependencies":{"http-proxy":"0.8.3"},"engines":{"node":"*"},"_id":"dynamic-reverse-proxy@0.4.2","description":"A reverse proxy built on [http-proxy](https://github.com/nodejitsu/node-http-proxy) that is configured by REST.","dist":{"shasum":"5e67b46b51867ea942ee70ea70cda8bcc6600b75","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.4.2.tgz","integrity":"sha512-B3GfoWddp2ck9/C34t3szwRkgYYeFbThrpss0rat5JrdKptX2kZLDnQCsqEv9haAr0Voj+kmPpari6ocxo7l2A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCm3NNJtBPYAFbxKtwC7qkz3+E+UoPXzi8pZaBiVzJ4RQIhAOmHWIF/84H+snzGevnelC8yccyW0E8LnhqPbNQKD4mc"}]},"_npmVersion":"1.1.65","_npmUser":{"name":"adunkman","email":"andrew@dunkman.org"},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"}],"directories":{}},"0.4.3":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","version":"0.4.3","repository":{"url":"git://github.com/softek/dynamic-reverse-proxy.git"},"dependencies":{"http-proxy":"0.8.3"},"engines":{"node":"*"},"_id":"dynamic-reverse-proxy@0.4.3","description":"A reverse proxy built on [http-proxy](https://github.com/nodejitsu/node-http-proxy) that is configured by REST.","dist":{"shasum":"c7109d0cc70350a63907e8545713ba67e56fb837","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.4.3.tgz","integrity":"sha512-JGutNXV8H+o+vYexnRM8+2oirKSg7Sr0EpyqFrMrn07VLvbxtofilVqqjOYjRsqAG6O2AbYWOgbvaA2G5A1o1A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBD/aTRgHcfB/1kcGcJX/GmOW8V2+KavOJTIN3MK3I6nAiEAli65ECwUKK6PWa41nMqvMRJaZld8X4lRDiTD4HEhItI="}]},"_npmVersion":"1.1.62","_npmUser":{"name":"adunkman","email":"andrew@dunkman.org"},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"}],"directories":{}},"0.4.4":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","version":"0.4.4","repository":{"url":"git://github.com/softek/dynamic-reverse-proxy.git"},"dependencies":{"http-proxy":"0.8.5"},"engines":{"node":"*"},"_id":"dynamic-reverse-proxy@0.4.4","description":"A reverse proxy built on [http-proxy](https://github.com/nodejitsu/node-http-proxy) that is configured by REST.","dist":{"shasum":"3282e05ac5a5d9754947c90da4bca7cbde009274","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.4.4.tgz","integrity":"sha512-r61i3Reva97shXKoT1hv8760/Vm6+ElC4nja0kJn0qQDOVAz6W1dkH30p5Np9+e8XMC5JA6D5v1Ie/S8LANFqg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCcw0cFH34EYJnZYL/Cjb4vSGYCpx1Pa1FPYsAWStWAAIhAOetDjcAxC0RC2aQtmyZi4oo++Al4XYY9K8Xr+wX12r+"}]},"_npmVersion":"1.1.62","_npmUser":{"name":"adunkman","email":"andrew@dunkman.org"},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"}],"directories":{}},"0.4.5":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","version":"0.4.5","repository":{"url":"git://github.com/softek/dynamic-reverse-proxy.git"},"dependencies":{"http-proxy":"0.8.5"},"engines":{"node":"*"},"_id":"dynamic-reverse-proxy@0.4.5","description":"A reverse proxy built on [http-proxy](https://github.com/nodejitsu/node-http-proxy) that is configured by REST.","dist":{"shasum":"a0a28c5dea9fb864143a1ddeccaed57855bbb8c7","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.4.5.tgz","integrity":"sha512-1bdRiK8ruJo6tJMzBRBd/o4cjTKVciPNvbco4vM8fRb/gTPgEtQ+f+zdUaVql3qGGfX/1Dfl3edpUumL6Ug7vA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBLh79rHXzfmhhv6G0YIjtGYUQE9vVLmyDYlkjJyZPMSAiAT3bbYJxkrBYT5WD6ZtK2n2NKzagrnCIE3wB2RfmjM0g=="}]},"_npmVersion":"1.1.62","_npmUser":{"name":"joeandaverde","email":"joe@andaverde.net"},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"},{"name":"joeandaverde","email":"joe@andaverde.net"}]},"0.5.0":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","version":"0.5.0","repository":{"url":"git://github.com/softek/dynamic-reverse-proxy.git"},"dependencies":{"http-proxy":"1.1.4"},"engines":{"node":"*"},"description":"A reverse proxy built on [http-proxy](https://github.com/nodejitsu/node-http-proxy) that is configured by REST.","bugs":{"url":"https://github.com/softek/dynamic-reverse-proxy/issues"},"homepage":"https://github.com/softek/dynamic-reverse-proxy","_id":"dynamic-reverse-proxy@0.5.0","_shasum":"9eccb099acd9b10a880e1186cbc13eebd4a6bb9b","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"joeandaverde","email":"joe@andaverde.net"},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"},{"name":"joeandaverde","email":"joe@andaverde.net"}],"dist":{"shasum":"9eccb099acd9b10a880e1186cbc13eebd4a6bb9b","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.5.0.tgz","integrity":"sha512-Jms8cvOYKwYtHX8NZZOjt+2nVO9k02i0Wocopf8eVpC7ET89f/q7I9xWVAPU3QKYhC0G/QuABlEjxAguYoD9GQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCELIR2bLfUOOp6IIR7go0/HwEkcbQHECCsfOJrish0jwIgXGJR8j8BhlJ2l6Ds7q371lcxxZGlFjyZazR5wEVkdto="}]}},"0.6.0":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","version":"0.6.0","repository":{"url":"git://github.com/softek/dynamic-reverse-proxy.git"},"dependencies":{"http-proxy":"1.1.4"},"engines":{"node":"*"},"description":"A reverse proxy built on [http-proxy](https://github.com/nodejitsu/node-http-proxy) that is configured by REST.","bugs":{"url":"https://github.com/softek/dynamic-reverse-proxy/issues"},"homepage":"https://github.com/softek/dynamic-reverse-proxy","_id":"dynamic-reverse-proxy@0.6.0","_shasum":"585deb61bf922aae08fe4a1be4535ca43f18f2e2","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"joeandaverde","email":"joe@andaverde.net"},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"},{"name":"joeandaverde","email":"joe@andaverde.net"}],"dist":{"shasum":"585deb61bf922aae08fe4a1be4535ca43f18f2e2","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.6.0.tgz","integrity":"sha512-2GGl4Ngvak6pgyfbf9ovLtCmL8EX3haMrr8ATEuzl93pTsXgj/VS1bvKLKPU54c2dMpRi/GKQgMj5Zoq2qJ1fQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDd3Erwb5pEKVsgMVT7yk240NEbVJiUw6Ff2Zd5ymp5tAiEAvR7Jcow48Tui8Isu5abKodjczUZLFwB+hO/paxd6AFg="}]}},"0.7.0-alpha1":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","contributors":[{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},{"name":"Joe Andaverde"},{"name":"Jeremy Sellars","email":"jeremy.sellars@softekinc.com"}],"license":"MIT","version":"0.7.0-alpha1","scripts":{"prepublish":"lein build-release & keybase dir sign","start":"node server.js"},"repository":{"type":"git","url":"https://github.com/softek/dynamic-reverse-proxy"},"bugs":{"url":"https://github.com/softek/dynamic-reverse-proxy/issues"},"keywords":["reverse proxy"],"dependencies":{"http-proxy":"1.9.0"},"engines":{"node":"*"},"devDependencies":{"closurecompiler-externs":"^1.0.4"},"gitHead":"f50cce8b8a3f4f6a454b0e6d9f57c40729391d0f","description":"A reverse proxy built on [http-proxy](https://github.com/nodejitsu/node-http-proxy) that is configured by REST.","homepage":"https://github.com/softek/dynamic-reverse-proxy","_id":"dynamic-reverse-proxy@0.7.0-alpha1","_shasum":"08c53822948e97b1c67f1402b74357a74d2b8d44","_from":".","_npmVersion":"2.7.4","_nodeVersion":"1.6.3","_npmUser":{"name":"jeremyrsellars","email":"jeremyrsellars@gmail.com"},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"},{"name":"joeandaverde","email":"joe@andaverde.net"},{"name":"jeremyrsellars","email":"jeremyrsellars@gmail.com"}],"dist":{"shasum":"08c53822948e97b1c67f1402b74357a74d2b8d44","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.7.0-alpha1.tgz","integrity":"sha512-6B6Rh9Bt7pJUyHtiQgGnlS+2XReZham7I1fs7fR3D6TN7oDq+qJ9qSTQ5iOCzMtSwqg0gQRcergzuVhFeNckZw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB2EofC3ckCNskohnvzuxVRyKDNPN7QNNF3j30fBZ5mPAiEA2I4nUTQETuYNm1b0edYiokYnNqmcnZENvyuGe+jqJw8="}]}},"0.7.0-alpha2":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","contributors":[{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},{"name":"Joe Andaverde"},{"name":"Jeremy Sellars","email":"jeremy.sellars@softekinc.com"}],"license":"MIT","version":"0.7.0-alpha2","scripts":{"prepublish":"lein build-release & keybase dir sign","start":"node server.js"},"repository":{"type":"git","url":"https://github.com/softek/dynamic-reverse-proxy"},"bugs":{"url":"https://github.com/softek/dynamic-reverse-proxy/issues"},"keywords":["reverse proxy"],"dependencies":{"http-proxy":"^1.9.0"},"devDependencies":{"closurecompiler-externs":"^1.0.4","keybase":"^0.7.7"},"engines":{"node":"*"},"gitHead":"3e27c952bd28600c8ccb729cb6d331749fc3a62c","description":"A reverse proxy built on [http-proxy](https://github.com/nodejitsu/node-http-proxy) that is configured by REST.","homepage":"https://github.com/softek/dynamic-reverse-proxy","_id":"dynamic-reverse-proxy@0.7.0-alpha2","_shasum":"7a7b4479f1065819206ff93ad7864e2eec415acd","_from":".","_npmVersion":"2.7.4","_nodeVersion":"1.6.3","_npmUser":{"name":"jeremyrsellars","email":"jeremyrsellars@gmail.com"},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"},{"name":"joeandaverde","email":"joe@andaverde.net"},{"name":"jeremyrsellars","email":"jeremyrsellars@gmail.com"}],"dist":{"shasum":"7a7b4479f1065819206ff93ad7864e2eec415acd","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.7.0-alpha2.tgz","integrity":"sha512-XDpRkSkG2+INQDDk4oEjg290KpNaSYumJIppR511spTiv7076QWyf2klhnd0B+d1j3wa9ajM//0TPklhwJjffQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAhOhyPSm3lyCBP4Sxj/b5GJ7YCXY/76flC1LzMU1VSsAiA/pCcbXlzA1RSKn+oa5PTLiWY7H1ZmkDEX5ZeExbOG5g=="}]}},"0.7.0-alpha3":{"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"name":"dynamic-reverse-proxy","contributors":[{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},{"name":"Joe Andaverde"},{"name":"Jeremy Sellars","email":"jeremy.sellars@softekinc.com"}],"license":"MIT","version":"0.7.0-alpha3","scripts":{"test":"node test.js","prepublish":"lein build-release & keybase dir sign","start":"node server.js"},"repository":{"type":"git","url":"https://github.com/softek/dynamic-reverse-proxy"},"bugs":{"url":"https://github.com/softek/dynamic-reverse-proxy/issues"},"keywords":["reverse proxy"],"dependencies":{"http-proxy":"^1.9.0"},"devDependencies":{"closurecompiler-externs":"^1.0.4","keybase":"^0.7.7","source-map-support":"^0.2.10"},"engines":{"node":"*"},"gitHead":"32e5316d1f09ded240115fafbe3099224b91b293","description":"A reverse proxy built on [http-proxy](https://github.com/nodejitsu/node-http-proxy) that is configured by REST.","homepage":"https://github.com/softek/dynamic-reverse-proxy","_id":"dynamic-reverse-proxy@0.7.0-alpha3","_shasum":"b31b69c09d18da8e2cf198c1d2a9894e4da27d6d","_from":".","_npmVersion":"2.7.4","_nodeVersion":"1.6.3","_npmUser":{"name":"jeremyrsellars","email":"jeremyrsellars@gmail.com"},"dist":{"shasum":"b31b69c09d18da8e2cf198c1d2a9894e4da27d6d","tarball":"https://registry.npmjs.org/dynamic-reverse-proxy/-/dynamic-reverse-proxy-0.7.0-alpha3.tgz","integrity":"sha512-14r7AE7hGf/OnlCZV7SWtioT79DfvbwRudppxoo3XLmm+40mF6J8xjs0/Huhnn4StkffaKJb39pgJBmxyHd7CA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCx6w5GXDdcmVFGB/RPQPTK/3pw/mHwWMis01bHAqZTSAIhANWmsB1tMQ7H7b2l1B6K2v/xiXpMBUwmG+wTMfAmXjV9"}]},"maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"},{"name":"joeandaverde","email":"joe@andaverde.net"},{"name":"jeremyrsellars","email":"jeremyrsellars@gmail.com"}]}},"readme":"# dynamic-reverse-proxy\r\n\r\nA reverse proxy built on [http-proxy](https://github.com/nodejitsu/node-http-proxy) that is configured by REST.\r\n\r\n[Dynamic-reverse-proxy](http://github.com/softek/dynamic-reverse-proxy) exposes several web apps on a single port so you can:\r\n* **Use the right language for the job.** Maybe you want to use the best parts of [Clojure](http://clojure.org/), [Node.js](https://nodejs.org/about/), [Erlang](http://www.erlang.org/), [Ruby](https://www.ruby-lang.org/).  Put each project on its own port and use dynamic-reverse-proxy to expose a unified front to the world.\r\n* **Partition parts of the web app for stability**.  Put experimental features in their own process and relay the traffic.\r\n* **Only bother with HTTPS in one place**.  You can expose HTTPS to the world, but your \"behind the proxy\" apps don't need to worry about HTTPS.\r\n\r\n##### Latest stable release: 0.6.0 [Doc](https://github.com/softek/dynamic-reverse-proxy/blob/0b770e23c59818fe514e41897f7bf609efff474b/README.md)\r\n`npm install dynamic-reverse-proxy`\r\n\r\n##### Latest unstable release: 0.7.0-alpha2\r\n`npm install dynamic-reverse-proxy@0.7.0-alpha2`\r\n\r\n## Starting the server\r\n\r\n#### Stand-alone (available starting 0.7.0)\r\n```dos\r\nnpm install dynamic-reverse-proxy\r\ncd node_modules\\dynamic-reverse-proxy\r\nSET port=3000\r\nnpm start\r\n```\r\n\r\n#### With code\r\n```javascript\r\nvar http = require(\"http\"),\r\n    server = http.createServer(),\r\n    dynamicProxy = require(\"dynamic-reverse-proxy\")();\r\n\r\nserver.on(\"request\", function (req, res) {\r\n  if (req.url.match(/^\\/register/i)) {\r\n    dynamicProxy.registerRouteRequest(req, res);\r\n  }\r\n  else {\r\n    dynamicProxy.proxyRequest(req, res);\r\n  }\r\n});\r\n\r\nserver.listen(3000, function () {\r\n  console.log(\"Reverse Proxy started, listening on port 3000\");\r\n});\r\n```\r\n\r\n## Configuring the proxy\r\n\r\nThe reverse proxy is configured to route based on the first segment of the path. For example:\r\n - `/` would route to the host registered at `/`\r\n - `/application1` would route to the host registered at `/application1`\r\n - `/application2/test/index.html` would route to the host registered at `/application2`\r\n\r\nTo register the a host with the proxy:\r\n\r\n```HTTP\r\nPOST /register HTTP/1.1\r\nHost: localhost:3000\r\nContent-Length: 28\r\nContent-Type: application/json\r\n\r\n{\"prefix\": \"/\", \"port\":1234}\r\n```\r\n\r\nNow, any request made to `http://localhost:3000/` will be sent to `http://localhost:1234/`.\r\n\r\nTo register another host:\r\n\r\n```HTTP\r\nPOST /register HTTP/1.1\r\nHost: localhost:3000\r\nContent-Length: 32\r\nContent-Type: application/json\r\n\r\n{\"prefix\": \"/test\", \"port\":4321}\r\n```\r\n\r\nNow, any request made to `http://localhost:3000/test` will be sent to `http://localhost:4321/test`.\r\n\r\n### Wait, what about security? \r\n\r\nWell, it's pretty lame (but functional) at the moment. Only requests originating from the same machine as the proxy are allowed to register.\r\n\r\n## Events\r\n\r\nThe dynamic proxy object that is returned is an EventEmitter with the following events:\r\n\r\n - `proxyError` is passed `(error, host, request, response)` and is emitted when:\r\n     - A request is sent to a known host but the request could not be proxied (likely the host was unreachable). If no handler ends the response back to the original client, `500 Internal Server Error` will be returned.\r\n     - No host could be found to handle the request. In this case, the `error` will be `NOT_FOUND`. If no handler ends the response back to the original client, `501 Not Implemented` will be returned.\r\n\r\n - `registerError` is passed `(error, request, response)` and is emitted when a request is sent to `/register` but it could not be handled correctly. Error will be one of the following:\r\n     - `FORBIDDEN` (not allowed)\r\n     - `METHOD_NOT_ALLOWED` (must be a POST)\r\n     - `BAD_REQUEST` (not parsable as JSON)\r\n     - `INCOMPLETE_REQUEST` (path and port were not supplied)\r\n\r\n - `routeRegistered` is passed `(host)` and is emitted when a request is sent to `/register` and it was successful.\r\n\r\n## Methods\r\n\r\n - `dynamicProxy.addRoutes(routes)` adds an object of routes in the following format:\r\n\r\n```JSON\r\n{\r\n   \"/\": {\r\n      \"prefix\": \"\",\r\n      \"port\": 1234\r\n   },\r\n   \"/test\": {\r\n      \"prefix\": \"test\",\r\n      \"port\": 4321\r\n   }\r\n}\r\n ```\r\n\r\n## Troubleshooting\r\nThis package comes with both an optimized/minified \"release\" version, and a more-readable \"debug\" version.  To use the debug version, set `debug: true` in ./config.js.\r\n\r\n## Development\r\n\r\n### Roadmap\r\n* Allowing HOST-specific routes (`http://example.com/` gets a different route than `http://subdomain.example.com/` depending on the host header)\r\n* Requiring encryption for some routes (for example, force the `/login` route to use HTTPS)\r\n* Performance improvements for proxies with many routes. Before v0.7.0, the complexity was o(n) and O(n) because it uses the longest prefix that works.  This may become more important when certain areas of sites force HTTPS - that may use more routes, depending on your URL scheme.\r\n\r\n### Scripts\r\n* To set the version (in package.json, project.clj, resources/version.js): `lein set-version 0.x.x-alphaX`.  You can also `:dry-run true` to [see what changes would be made](https://github.com/pallet/lein-set-version#dry-run-mode).\r\n","maintainers":[{"name":"adunkman","email":"andrew@dunkman.org"},{"name":"joeandaverde","email":"joe@andaverde.net"},{"name":"jeremyrsellars","email":"jeremyrsellars@gmail.com"}],"time":{"modified":"2022-06-16T02:36:04.904Z","created":"2012-10-09T16:10:48.205Z","0.1.0":"2012-10-09T16:10:50.264Z","0.2.0":"2012-10-11T14:51:35.681Z","0.3.0":"2012-10-17T20:06:50.924Z","0.4.0":"2012-10-30T15:41:02.561Z","0.4.1":"2012-10-31T22:05:03.584Z","0.4.2":"2012-11-05T17:13:38.582Z","0.4.3":"2012-12-14T17:02:16.394Z","0.4.4":"2012-12-17T22:22:03.108Z","0.4.5":"2012-12-20T20:37:24.199Z","0.5.0":"2014-06-04T15:46:08.887Z","0.6.0":"2014-06-25T19:30:33.684Z","0.7.0-alpha1":"2015-04-02T00:12:57.314Z","0.7.0-alpha2":"2015-04-02T00:54:44.229Z","0.7.0-alpha3":"2015-04-14T02:03:17.381Z"},"author":{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},"repository":{"type":"git","url":"https://github.com/softek/dynamic-reverse-proxy"},"description":"A reverse proxy built on [http-proxy](https://github.com/nodejitsu/node-http-proxy) that is configured by REST.","homepage":"https://github.com/softek/dynamic-reverse-proxy","bugs":{"url":"https://github.com/softek/dynamic-reverse-proxy/issues"},"readmeFilename":"README.md","users":{"drgorb":true,"xpk":true,"honzajde":true},"keywords":["reverse proxy"],"contributors":[{"name":"Andrew Dunkman","email":"andrew@dunkman.org"},{"name":"Joe Andaverde"},{"name":"Jeremy Sellars","email":"jeremy.sellars@softekinc.com"}],"license":"MIT"}