问题: 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 Bad Request 错误。NGINX 在不向if
配置添加语句和一些逻辑的情况下是否知道什么是错误请求?
或者,我是否需要在我计划使用的配置中设置每个错误,如果我不这样做,它就不能被触发?我一直认为是这种情况,但是当我看到有多少不同的 400 和 500 错误时,我想知道我是否没有完全理解这个概念。
Nginx 将处理除应用程序级错误之外的所有内容。几个例子是
如果请求破坏了 RFC 指定的格式,则为 400。
403 如果 nginx 由于权限而无法读取文件。
如果找不到文件,则为 404。
依此类推,nginx 唯一不处理的是非 RFC 要求,例如您的反盗链和超出其范围的东西,例如 fastcgi/uwsgi/http 后端。
基本上不用担心与您的特定业务逻辑无关的任何事情。