标签归档:ssi

解决nginx的404页面使用SSI时循环嵌套的问题

问题场景:

1、nginx配置了404页面且指向一个使用了SSI include的页面(例如:404.shtml)
2、由于配置等原因,404.shtml中include的内容也不存在(也返回404)

造成结果:
request->404->redirect to 404.shtm->include a 404.shtml->include…
从而导致所有nginx的工作进程都被此请求的死循环block住

解决办法:

参考nginx SSI的文档,利用block语句和include语句中的stub属性:

stub — The name of the block to use as a default if the request is empty or returns an error.

首先在404.shtml中定义一个block:


SSI Not Found

然后在需要include的地方使用stub将include出错时的内容指向上面定义的block: