Secure Static IP for Node.js HTTPS using Axios & QuotaGuard Shield

Learn how to securely route Node.js HTTP traffic through a QuotaGuard Shield proxy using the Axios library. Includes full code examples.

Prerequisites

npm install axios https-proxy-agent

Instructions

Run example

QUOTAGUARDSHIELD_URL=... node https.js

Be sure to set QUOTAGUARDSHIELD_URL to your HTTP proxy URL from the QuotaGuard Dashboard.

Optional Parameters
  • TARGET_URL: The endpoint to connect to (defaults to https://ip.quotaguard.com)
    • Must start with http:// or https://
    • Supports non-standard ports (e.g., https://example.com:8443)

Examples

Default target (ip.quotaguard.com)
QUOTAGUARDSHIELD_URL=... node https.js
Custom target with standard port
QUOTAGUARDSHIELD_URL=... TARGET_URL=https://httpbin.org/get node https.js
Custom target with non-standard port
QUOTAGUARDSHIELD_URL=... TARGET_URL=https://example.com:8443 node https.js

Test in Docker

docker build -t qg-shield-node-https-axios-example .
docker run -e QUOTAGUARDSHIELD_URL=... qg-shield-node-https-axios-example
Docker with custom target
docker run -e QUOTAGUARDSHIELD_URL=... -e TARGET_URL=https://httpbin.org/get qg-shield-node-https-axios-example

Code Samples

Node.js
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');

const proxyUrl = process.env.QUOTAGUARDSHIELD_URL;

// HTTPS endpoint for the proxy to connect to
const endpoint = process.env.TARGET_URL || 'https://ip.quotaguard.com';

// Validate endpoint format
if (!endpoint.startsWith('https://') && !endpoint.startsWith('http://')) {
  console.error('Error: TARGET_URL must start with "http://" or "https://"');
  console.error('Current value:', endpoint);
  process.exit(1);
}

const fetchIp = async () => {
    try {
        // Create an HTTPS agent that tunnels through the proxy
        const httpsAgent = new HttpsProxyAgent(proxyUrl);

        const axiosInstance = axios.create({
            httpsAgent
        });

        const res = await axiosInstance.get(endpoint);
        console.log('Status Code:', res.status);
        console.log('Response headers:', res.headers);
        console.log(res.data);
    } catch (err) {
        console.error('Error:', err.message);
        if (err.response) {
            console.error('Status Code:', err.response.status);
            console.error('Response headers:', err.response.headers);
        }
    }
};

fetchIp();
Docker File
FROM node:latest

COPY https.js /app/https.js

WORKDIR /app/

RUN npm install axios https-proxy-agent

ENTRYPOINT [ "node", "https.js" ]