
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
https-server-proxy
Advanced tools
An https server proxy for node.js (supporting http2 and Express applications)
This is reverse-proxy meant to run at 'the front' of live web server. It:
npm install https-reverse-proxy
Call proxy with the name of your certificate as the first argument and a mapping object between domains/subdomain-names and internal ports as your second argument. You can also choose to redirect one domain to another (see below).
const proxy = require('https-reverse-proxy');
proxy('some.domain.org' /*cert name*/, {
'some.domain.org': 3002,
'domain.com': 3003,
'www.domain.com': { redirect: "domain.com" }
});
If you want to use https-reverse-proxy as an ES-module (and thus have "type":"module" in your package.json file) simply replace the require statement with:
import proxy from 'https-server-proxy/es.mjs';
(If you need to use several certificates then add another cert-name as argument 3, the mapping for domains in this certificate as argument 4 etc.)
Note: The cert name is the name of a subfolder in the folder pathToCerts (default: /etc/letsencrypt/live). Each cert folder must contain the two files privkey.pem and fullchain.pem. This is the standard for LetsEncrypt certificates obtained using certbot. (If you have obtained a certificate with different file names for the pem-files, then rename them.)
The default settings should be fine for most types of usage. But you can change them if you want before you set up your proxy.
The default values are listed below - you can change one, many or all of them by calling proxy.settings():
const proxy = require('https-reverse-proxy');
proxy.settings({
httpPort: 80,
httpsPort: 443,
pathToCerts: '/etc/letsencrypt/live',
xPoweredBy: 'Love',
http2MaxChunk: 8192,
http2MaxStreams: 80,
brotliCacheMaxSizeMb: 50,
/* 1-11, initial fast response when doing brotli */
brotliFastQuality: 1,
/* 1-11, recompress better when we have time left */
brotliRecompressQuality: 11,
/* compresss if true, ct = content-type header */
brotliCompress: ct =>
ct.includes('text') ||
ct.includes('javascript') ||
ct.includes('json') ||
ct.includes('svg')
});
proxy(/* see previous example */);
As of 2 March 2023 (one week after initial release):
FAQs
An https server proxy for node.js (supporting http2 and Express applications)
We found that https-server-proxy demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.