Skip to content

Getting random net::ERR_FAILED errors when requesting many files #2344

@thejavascriptman

Description

@thejavascriptman

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

  • When a proxy host that has HTTPS enabled receives too many requests, some requests fail randomly with a net::ERR_FAILED error (there is no status code in the Chrome network tab).
  • This issue does not happen if NPM is only working via HTTP.
  • It happens when multiple files are requested in a short period of time, NocoDB is a self-hosted app that requests around 200 files on the first load, and it's used as an example because it's easier to trigger the issue with it.
  • To make sure the issue was not limited to NocoDB, I created a simple Next.js app (a Next.js app loads about 30 on the first load on average), and the issue still happened, but less frequently (the issue seems related to the amount of requests made in a short period of time).
  • No useful kernel logs (tried dmesg -w and journalctl -f)
  • No useful NGINX logs, checked the respective access and error logs and the files thtat were shown as failed on Chrome, were shown with an status code 200 on the NGINX logs.

Nginx Proxy Manager Version

v2.9.18

To Reproduce
Steps to reproduce the behavior:

  1. Run a web application that requests lots of files, for the sake of testing you can try NocoDB e.g. docker run --rm --net=host nocodb/nocodb, it will listen at port 8080, using --net=host to bypass docker-proxy (so 1 less point of failure)
  2. On NPM add a new Proxy Host to expose NocoDB, I'm running NocoDB on the same host as NPM so I'm exposing http://127.0.0.1:8080
  3. Enable SSL under a custom domain (I'm using letsencrypt with a domain that points to my local NPM instance, so the requests do not go to the internet)
  4. Visit the configured domain with the element inspector open e.g. https://nocodb.example.com (you don't even need to create an account, just load the first page and see it fail)

Expected behavior

All requests should succeed

Screenshots

image

  • Only showing the first request that failed, expect more failed requests when scrolling the network requests inspector

image

  • Ignore the favicon.icon, that one is expected to fail
  • Ignore the TypeError: Failed to fetch dynamically imported module error, that one comes from NocoDB when a network error happens

Operating System

  • Tested on Alpine Linux 64-bit host
  • Tested on Debian 11 64-bit host
    (Same results on both)

Additional context

  • Docker version 20.10.20 (on Alpine host, my Debian host no longer exists but can re-create if needed)
  • Tested different network cards, tested different network cables
  • Tried increasing net.netfilter.nf_conntrack_max and fs.file-max but they didn't work
  • Tested a reverse proxy with Caddy and it worked without issues
    {
      auto_https off
    }
    
    http://nocodb.example.com {
      redir https://{host}{uri} permanent
    }
    
    https://nocodb.example.com {
      tls /letsencrypt/archive/npm-20/fullchain1.pem /letsencrypt/archive/npm-20/privkey1.pem
      reverse_proxy 127.0.0.1:8080 {
        header_up Host nocodb.example.com
      }
    }
    

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions