让 nginx 对所有不匹配模式的 URL 显示 404 页面

让 nginx 对所有不匹配模式的 URL 显示 404 页面

/auth我将 nginx 配置为某些应用 URL(例如、等/api)的反向代理/users。我希望 nginx 拒绝所有其他请求并显示 404 或执行其他操作。

我的配置中现在有这个:

server {
    listen 80;

    error_page  404  /404.html;

    location /404.html {
        root static;
    }

    location /auth$ {
        proxy_pass http://localhost:8080/auth;
        proxy_redirect off;
    }

    location /api$ {
        proxy_pass http://localhost:8080/api;
        proxy_redirect off;
    }

    location /users$ {
        proxy_pass http://localhost:8080/users;
        proxy_redirect     off;
    }
}

当我访问任何匹配的网址时,一切正常,但是当我输入类似的内容时/abrakadabra,它会显示一个加载旋转器,尝试加载某些内容,然后显示空白页,即使我有它的文件,并且在控制台中我看到它的 404 错误。

我在 access.log 中看到了这些请求。

我做错了什么以及如何解决?

答案1

添加

location / {
    return 404;
}

在块的末尾server {},在所有之后location {}。此外,您正在混合正则表达式和普通位置语法,符号$是正则表达式,并且您的位置被定义为普通位置。

相关内容