问题: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 后端。
基本上,不要担心与您的特定业务逻辑无关的任何事情。