NginxProxyManager / NginxProxyManager/nginx-proxy-manager

"IP_RANGES_FETCH_ENABLED=false" does not disable periodic IP range fetches

Open Beginner friendly
#5,748 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
TypeScript
Stars
34.2k
Forks
3.9k
Avg merge
21h 12m
Merged PRs (30d)
20

Description

Checklist

  • Have you pulled and found the error with jc21/nginx-proxy-manager:latest docker image?
    • Yes
  • Are you sure you're not using someone else's docker image?
    • Yes
  • Have you searched for similar issues (both open and closed)?
    • Yes

Describe the bug
Setting IP_RANGES_FETCH_ENABLED to false prevents the initial IP-range fetch, but it does not prevent subsequent periodic fetches.

At startup, NPM correctly reports that fetching is disabled. However, it still initializes the IP Ranges Renewal Timer. Six hours later, it attempts to fetch the CloudFront and Cloudflare IP-range data.

Nginx Proxy Manager Version
v2.15.1

To Reproduce

  1. Configure NPM with:
environment:
      IP_RANGES_FETCH_ENABLED: 'false'
  1. Start the container.
  2. Check startup log:
app-1  | [7/25/2026] [9:40:38 PM] [Global   ] › ℹ  info      IP Ranges fetch is disabled by environment variable
app-1  | [7/25/2026] [9:40:38 PM] [IP Ranges] › ℹ  info      IP Ranges Renewal Timer initialized
  1. Leave the container running for six hours.
  2. It nevertheless attempts an IP-range fetch:
app-1  | [7/26/2026] [3:40:38 AM] [IP Ranges] › ℹ  info      Fetching IP Ranges from online services...
app-1  | [7/26/2026] [3:40:38 AM] [IP Ranges] › ℹ  info      Fetching https://ip-ranges.amazonaws.com/ip-ranges.json
app-1  | [7/26/2026] [3:42:53 AM] [IP Ranges] › ✖  fatal (blocked by my firewall)

Expected behavior
When IP_RANGES_FETCH_ENABLED=false, NPM should neither perform the initial fetch nor initialize the periodic IP-range renewal timer. No IP-range fetches should occur for the lifetime of the process.

Operating System

  • Ubuntu 26.04 LTS, x86_64
  • Linux kernel 7.0.0-28-generic
  • Docker Engine 29.6.2
  • Docker Compose stack managed through "Komodo"

Additional context
ChatGPT 5.6 Sol root-cause analysis:

The apparent cause is in backend/index.js. The environment variable controls the initial call to internalIpRanges.fetch(), but internalIpRanges.initTimer() is subsequently called unconditionally:

  if (!IP_RANGES_FETCH_ENABLED) {
      logger.info("IP Ranges fetch is disabled by environment variable");
      return;
  }

  // ...

  internalCertificate.initTimer();
  internalIpRanges.initTimer();

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in backend/index.js, where the issue identifies the startup handling for IP range fetching and timer initialization. Trace the IP_RANGES_FETCH_ENABLED path and verify that disabling it prevents both the initial fetch and the renewal timer. Confirm the result by starting with the environment variable set to false and checking that no later fetch occurs.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
backend
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.