使用 nginx 处理其他服务器产生的错误

Use nginx to handle errors generated by another server

我有一个 nginx 服务器,它自己处理一些请求并使用以下行将其余请求传递给 Node.JS 服务器:

proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;

nginx 和 node.js 都生成它们自己的 http 页面,它们应该是相同的(来自 nginx 的 404 对于用户来说应该与来自 node.js 的 404 相同)。

我希望 nginx 检查 node.js 产生的响应代码,如果它产生错误则回退到它自己的错误页面。这可能或明智吗?

1. Nginx receives HTTP request
2. HTTP request passed to Node.JS
3. Node.JS responds with 404 error
4. Nginx responds with 404 error

添加行

proxy_intercept_errors on;

到location块会导致远程服务器产生的错误被nginx拦截。