nest-local-https-proxy
v1.1.0
Published
A simple library to add HTTPS support to your HTTP NestJS application for local develoment, debugging, and testing.
Downloads
7,061
Maintainers
Readme
Description
A lightweight local HTTPS proxy library for Nest framework apps, supporting both Express and Fastify HTTP adapters, designed for use with self-signed SSL certificates.
⚠ Disclaimer
This library is intended only for use in local development, testing, and troubleshooting with self-signed SSL certificates. It is not recommended to use this in any production context or public-facing environment.
Always follow best practices when managing SSL certificates for any public-facing or production environment.
Self-signed SSL Certificates
See the following gist for info on creating self-signed SSL certificate PEM files using openssl
:
Installation
$ npm i nest-local-https-proxy
Implementation
Load your certificate and private key files into an HTTPS options (
SecureContextOptions
) object.const certPath = './cert.pem'; const keyPath = './key.pem'; let httpsOptions: SecureContextOptions; // Confirm local certificate files exist if (fs.existsSync(certPath) && fs.existsSync(keyPath)) { httpsOptions = { cert: fs.readFileSync(certPath), key: fs.readFileSync(keyPath), }; } else { console.log('Failed to initalize HTTPS certificates for local SSL proxy'); }
Instatiate the
LocalHttpsProxy
class, providing yourNestApplication
instance, and the HTTPS options object.const httpsDevProxy = new LocalHttpsProxy(app, httpsOptions);
(Optional) Provide callback functions to constructor or subscribe to events on
LocalHttpsProxy
instance.Provide callback functions to constructor:
const errorCallback = (error) => { console.error(`HTTPS proxy error occurred: ${error.message}`); }; const listeningCallback = (httpsPort) => { console.log(`HTTPS listening on ${httpsPort}`); }; const httpsDevProxy = new LocalHttpsProxy(app, httpsOptions, errorCallback, listeningCallback);
Subscribe to events:
httpsDevProxy.on('listening', (httpsPort) => { console.log(`HTTPS listening on ${httpsPort}`); }); httpsDevProxy.on('error', (error) => { console.error(`HTTPS proxy error occurred: ${error.message}`); });
Start the proxy
httpsDevProxy.start(port);
Test
# unit tests
$ npm run test
# test coverage
$ npm run test:cov
License
The nest-local-https-proxy project is MIT licensed.