找资料的时候发现网上全部是php返回的,去nginx官网看了下资料才发现:

环境:nginx+tomcat

nginx做反向代理tomcat,当url连接不存在时,nginx返回404
方法:
在nginx配置文件nginx.conf中加入配置:
proxy_intercept_errors on;
proxy_intercept_errors 用法:
模块:http,server,location
用法:proxy_intercept_errors on|off;
默认值:proxy_intercept_errors off;
当后端服务器的响应状态码大于等于400时,决定是否直接将响应发送给客户端,亦或将响应转发给nginx由error_page指令来处理。
2.设置error_page
语法:error_page code ... [=[response]] uri;
默认值: -
模块: http, server ,location , if in location
为指令错误定义显示的URI。当前配置级别没有error_page指令时,将从上层配置继承。uri可以包含变量。
比如:
error_page 404 /404.html;error_page 500 502 503 504 /50x.html;而且可以使用"=response"语法改变响应状态码。比如:
error_page 404 =200 /empty.gof;如果URI将被发送到一个Fastcgi服务器处理,这些后端服务器又返回了不同的响应状态码(比如200、302、401或404),那么这些返回的状态码也可以由本指令处理:
error_page 404 = /404.php;当然也可以用本指令对错误处理进行重定向:
error_page 403 http://example.com/forbidden.htm;;error_page 404 =301 http://example.com/notfound.html;对于例子中的第一行,nginx将向客户端发送302响应状态码。这种用法能使用的状态码只有301、302、303、307.
如果内部跳转时无需改变URI,可以将错误处理转到一个命名路径:
location /{error_page 404 =@fallback;}
location @fallback{proxy_pass http://backend;}如果处理uri产生了错误,那么nginx将最后一次出错的HTTP响应状态码返回给客户端。