NginxProxyManager / NginxProxyManager/nginx-proxy-manager

Web frontend doesn't return 404 for unknown paths, only 200 Ok

Open
#5,620 0 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
When the NPM web admin frontend receives an HTTP request for a path that does not exist, it fails to send a 404 Not Found. Instead it send 200 Ok, with what I think is index.html in the response body.

Nginx Proxy Manager Version
v2.14.0

To Reproduce
Steps to reproduce the behavior:

> curl -i https://npm.example.com/NoSuchPath
HTTP/2 200
server: openresty
date: Tue, 02 Jun 2026 22:49:28 GMT
content-type: text/html
content-length: 1451
last-modified: Tue, 17 Feb 2026 05:33:26 GMT
etag: "6993fda6-5ab"
accept-ranges: bytes
x-served-by: npm.example.com

<!DOCTYPE html>
<html lang="en">
        <head>
                <meta charset="utf-8" />
                <meta name="viewport" content="width=device-width, initial-scale=1" />
                <title>Nginx Proxy Manager</title>
                <meta name="description" content="In The Office Planner" />
[ABRIDGED]
                <meta name="theme-color" content="#ffffff" />
                <script type="module" crossorigin src="/assets/index-BwxhCj6Q.js"></script>
                <link rel="stylesheet" crossorigin href="/assets/index-PuE7CNBN.css">
        </head>
        <body>
                <noscript>You need to enable JavaScript to run this app.</noscript>
                <div id="root"></div>
                <script>
                        if (global === undefined) {
                                var global = window;
                        }
                </script>
        </body>
</html>

The log entry looks like this:

[02/Jun/2026:18:49:28 -0400] - 200 200 - GET https npm.example.com "/NoSuchPath" [Client 1.2.3.4] [Length 1451] [Gzip -] [Sent-to 127.0.0.1] "curl/7.74.0" "-"

Notice that the log shows a 200 Ok, and that it sent 1451 unnecessary bytes in the response body.

Expected behavior
I expect a request for an unknown path to return a 404 Not found.

Operating System
Docker on linux/amd64

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 by reproducing the request with curl against the web admin frontend and trace how unknown paths are handled. Inspect the frontend routing and Nginx response behavior shown by the request log. Done means an unknown path returns HTTP 404 Not Found instead of index.html with HTTP 200.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, nginx, typescript
Domain
frontend, web-dev
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
56/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.