NGINX 是否会处理一些错误事件/代码,而无需在配置中默认设置它们?

NGINX 是否会处理一些错误事件/代码,而无需在配置中默认设置它们?

问题:NGINX 默认处理一些错误事件/代码吗?

背景:我的配置的以下部分停止热链接并返回 403 错误。

    location ~* \.(jpg|png|svg|webp|ico)$ {
        valid_referers none blocked server_names ~\.bing\. ~\.duckduckgo\. ~\.facebook\. ~\.google\. ~\.instagram\. ~\.twitter\. ~\.yahoo\.;
        if ($invalid_referer) {
            return 403;
        }
    }

此部分阻止不需要的 HTTP 方法并返回 405 错误。

if ($request_method !~ ^(GET|HEAD|POST)$) {
    return 405;
}

这让我开始思考,是否存在一些我不需要在 NGINX 中设置的错误?

例如,400 错误请求错误if。NGINX 是否无需在配置中添加语句和一些逻辑就能知道什么是错误请求?

或者说,我是否需要在配置中设置我计划使用的每个错误,如果不这样做,它就无法触发?我一直以为是这种情况,但是当我看到有多少不同的 400 和 500 错误时,我想知道我是否没有完全理解这个概念。

答案1

Nginx 将处理除应用程序级错误之外的所有错误。以下是一些示例

如果请求违反了 RFC 指定的格式,则返回 400。
如果 nginx 由于权限问题无法读取文件,则返回 403。
如果找不到文件,则返回 404。

等等,nginx 唯一不能处理的是非 RFC 要求,例如反热链接以及超出其范围的内容,例如 fastcgi/uwsgi/http 后端。

基本上,不要担心与您的特定业务逻辑无关的任何事情。

相关内容