NginxProxyManager / NginxProxyManager/nginx-proxy-manager
"IP_RANGES_FETCH_ENABLED=false" does not disable periodic IP range fetches
Nobody has claimed this yet.
- 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:latestdocker 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
- Configure NPM with:
environment:
IP_RANGES_FETCH_ENABLED: 'false'
- Start the container.
- 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
- Leave the container running for six hours.
- 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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