Nginx 中的 HTTP 错误 json

HTTP errors as json in nginx

我有 Python Flask 应用程序,当出现错误请求时,它使用 @app.errorhandler 到 return json 对象而不是典型的 HTML 消息,不允许使用方法、找不到页面或任何其他 HTTP 异常。

我现在正在尝试让 nginx 处理这些事情,但只取得了部分成功。当我使用无效方法(例如 PATCH)发出请求时,我收到 json 消息。但是当我使用一个不存在的页面时,我会收到典型的 HTML 消息。

这就是我的 nginx 服务器配置的样子。这是 Flask docs 中给出的例子,最后多了两行:

server {
    location / {
        limit_except GET POST {
            deny all;
        }

        try_files $uri @yourapplication;
    }
    location @yourapplication {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/uwsgi.sock;
    }

    proxy_intercept_errors on;
    include api_json_errors.conf;
}

其中 api_json_errors.conf 是这样的:

error_page 400 = @400;
location @400 { return 400 '{"status":400,"message":"Bad request"}\n'; }

您必须将 uwsgi_intercept_errorsuwsgi_pass

一起使用

proxy_intercept_errorsproxy_pass