'返回404' 不尊重Nginx的自定义错误页面设置

我在Nginx使用全局error_page设置在服务器块中设置了我的自定义404页面,但是,如果我在位置块内执行以下操作:

 if ($uri ~* ...) {return 404;} 

那么返回默认的Nginx 404页面。

有没有办法在这种情况下返回自定义页面?

更新:目前我有这样的事情

 server { ... error_page 404 /html/error/404.html; ... root /home/www-data/mysite/static; location ^~ /blah/blah/ { if ($uri ~* ...) { return 404; } ... } location ^~ /html/error/ { internal; } } 

而不是直接返回404,而是使用:

 error_page 404 /404.html; location / { try_files $uri =404; } 

这将产生404 http状态码与自定义404错误页面。 希望这可以帮助。

“/ html / error”不应该在根(绝对)和error_path(相对)path中。

文档根在哪里? 当它有一个“html /”子目录时,它真的是“/ home / www-data / mysite / static”吗? 你确定root不应该是'/ home / www-data / mysite / static / html'吗?

〜*匹配的右侧是什么模式? 你可能有一个正则expression式错误,导致它匹配一切。

或者,根目录可能是错误的,nginx可能会返回404,因为它找不到该文件,而不是因为“if”模式匹配。

默认情况下,nginx错误日志将logging实际的文件系统pathnginx尝试访问由于缺less文件而返回404的请求。 如果这些错误没有显示在错误日志中,请参阅log_not_found和error_log的nginx文档。