Static IP guide

Making API requests with a static IP from a Node app on Deno Deploy

Deno Deploy spins up a fresh isolate for each request, often in whichever edge region is closest to the caller, so the outbound IP a request leaves from isn't something your code controls. Store your Fixie proxy URL as a Deno Deploy environment variable and point your HTTP client at it, and every request leaves from the same pair of addresses no matter which isolate or region handled it.

RuntimeNode.js and JavaScript
PlatformDeno Deploy
DestinationAPI allowlisting
Fixie productFixie HTTP/S proxy

Recommended setup

Use Fixie HTTP/S proxy for HTTP and HTTPS requests to an API, webhook provider, or service that allowlists outbound IP addresses. Store the proxy value in FIXIE_URL, then configure Node.js to route outbound traffic through Fixie before connecting to API allowlisting.

Set up Fixie on Deno Deploy

Create a Fixie HTTP/S proxy in the Fixie dashboard. Copy the proxy value into Deno Deploy environment variables as FIXIE_URL, and copy the outbound IPs into the destination allowlist.

Implementation

The example below shows the core application-side change. Keep credentials in environment variables and avoid committing proxy, database, or API secrets.

Make an HTTP request through FIXIE_URL

const axios = require('axios');

const fixieUrl = new URL(process.env.FIXIE_URL);

axios.get('https://api.example.com/data', {
  proxy: {
    protocol: 'http',
    host: fixieUrl.hostname,
    // URL drops default ports, so fall back to 80 for Fixie's standard proxy port.
    port: Number(fixieUrl.port) || 80,
    auth: {
      username: fixieUrl.username,
      password: fixieUrl.password,
    },
  },
}).then((response) => {
  console.log(response.status);
});

Good to know

  • From the terminal, deno deploy env add FIXIE_URL "<proxy-url>" --secret sets it without the value ever appearing in the dashboard or CLI output.
  • Scope the variable to the Production context (and a separate one to Development, if you want preview deploys on a different proxy) — Build-context variables never reach your running code, so they're not useful for a proxy credential.

Allowlist and test the static IPs

  1. Open the Fixie dashboard and copy the outbound IP addresses for this proxy.
  2. Add both IPs to the API provider.
  3. Deploy the updated Node.js app on Deno Deploy.
  4. Run a small connection test before sending production traffic.

Related guides

Related docs

Is this guide useful?