#Nginx 重写反向代理proxy_pass的错误页

问题背景

Nginx经常用来做反向代理,直接将请求转发给目标服务器,然后把响应数据返回给客户端。

但是,有时候目标服务器返回的错误信息中包含了敏感信息,直接发给用户端,可能会暴露目标服务器。

这要怎么处理呢?

解决方法

方法就是利用proxy_intercept_errors参数来捕获目标服务器返回的错误,返回自定义错误页给客户端。

1). 设置捕获错误

proxy_intercept_errors on;

proxy_intercept_errors设置为on以后,目标服务器返回的300以上的错误都会被捕获。

2). 设置错误页

        error_page 404 /404.html;
        location = /404.html {
                root /usr/share/nginx/html;
                internal;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/html;
                internal;
        }