@gasket/plugin-https-proxy Examples
This document provides working examples for all exported interfaces from @gasket/plugin-https-proxy
.
Plugin Configuration
Basic Setup
// gasket.js
import { makeGasket } from '@gasket/core';
import pluginHttpsProxy from '@gasket/plugin-https-proxy';
export default makeGasket({
plugins: [
pluginHttpsProxy
],
httpsProxy: {
protocol: 'https',
hostname: 'localhost',
port: 8443,
target: {
host: 'localhost',
port: 3000
}
}
});
Advanced Configuration with SNI
// gasket.js
import { makeGasket } from '@gasket/core';
import pluginHttpsProxy from '@gasket/plugin-https-proxy';
import tls from 'tls';
import fs from 'fs';
export default makeGasket({
plugins: [
pluginHttpsProxy
],
httpsProxy: {
protocol: 'https',
hostname: 'example.com',
port: 443,
target: {
host: 'localhost',
port: 3000
},
ssl: {
SNICallback: (hostname, cb) => {
const ctx = tls.createSecureContext({
key: fs.readFileSync(`./certs/${hostname}.key`),
cert: fs.readFileSync(`./certs/${hostname}.crt`)
});
cb(null, ctx);
}
},
xfwd: true,
ws: true
}
});
Actions
startProxyServer
Start the HTTPS proxy server with configured settings:
// server.js
import gasket from './gasket.js';
gasket.actions.startProxyServer();
Lifecycle Hooks
prebootHttpsProxy
Execute operations before the proxy server starts:
// my-plugin.js
export default {
name: 'my-proxy-plugin',
hooks: {
prebootHttpsProxy: async function(gasket) {
// Load SSL certificates
gasket.logger.info('Loading SSL certificates...');
await loadCertificates();
// Initialize connection pools
gasket.logger.info('Initializing connection pools...');
await initializeConnectionPools();
// Set up health check endpoints
gasket.logger.info('Setting up health checks...');
await setupHealthChecks();
}
}
};
async function loadCertificates() {
// Certificate loading logic
return new Promise(resolve => setTimeout(resolve, 100));
}
async function initializeConnectionPools() {
// Connection pool initialization
return new Promise(resolve => setTimeout(resolve, 50));
}
async function setupHealthChecks() {
// Health check setup
return new Promise(resolve => setTimeout(resolve, 25));
}