避免在 nginx ssi 包含中显示 404 not found

gab*_*ifm 5 nginx ssi

我正在尝试从 apache 迁移到 nginx,但我在 apache 中最常用的功能之一是 ssi 包含。我正在测试 nginx 如何处理 ssi 但我遇到了一些问题...

如果包含虚拟文件不存在,我会收到嵌入的 404 页面,甚至没有 [发生错误] 消息。使用 apache ssi,如果文件不存在,则错误显示为注释。

另一点是,使用 apache SSIErrorMsg 指令,我可以在服务器配置级别设置错误文本,但我在 nginx 中找不到它,只是<!--# config errmsg="custom error" -->在 html 内部。我在 nginx 文档中看不到像 SSIErrorMsg 这样的指令

nginx 404 ssi 错误:

<html>
<head>
  <title>simple</title>
</head>
<body>
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.6.2</center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但在阿帕奇:

<html>
<head>
  <title>simple</title>
</head>
<body>
<!-- Error -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

该错误消息仅出现在 nginx 中,例如,当我编写一个 ssi 包含一些拼写错误时 <!--#include virtualll="example.html"-->

有没有办法在未找到的情况下显示错误而不是嵌入 404 文件?

这是 nginx 服务器配置:

server {
  listen  80;
  server_name demo.localhost;

  ssi on;
  ssi_silent_errors off;

  location / {
    root  /var/www/demoweb;
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我设置ssi_silent_errors off;什么都不显示,但我想要像<!--Error-->apache 那样的东西