Nginx自定义错误页面和geoip块。

时间:2018-02-05 08:05:43

标签: nginx geoip custom-error-pages

如果在nginx中发现错误(例如404,403..etc),我试图显示自定义错误页面。使用以下配置访问<div class="container"> <a class="circle" href="http://www.url1.html"> <span class="image" style="background-image: url(http://lorempixel.com/400/300/)"></span> <div class="ccont" style="font-weight: bold; text-decoration:none !important;">This is <br>Text1</div> </a> <a class="circle" href="http://www.url2.html"> <span class="image" style="background-image:url(https://lorempixel.com/400/200/)"></span> <div class="ccont" style="font-weight: bold; text-decoration:none !important;">This is <br>Text2</div> </a> </div>时显示的404错误页面。

/test

之后,我尝试添加基于geoip模块的条件检查。如果error_page 403 /403.html; error_page 404 /404.html; location = /403.html { root /usr/share/nginx/html/errors; allow all; } location = /404.html { root /usr/share/nginx/html/errors; allow all; } # Everything is a 404 location /test { return 404; #return the code 404 } 等于1,则nginx将直接返回403。

$deny_request

http状态403按预期返回。但是,它不是自定义错误页面,而是返回nginx默认403错误页面。似乎无法将检查放入具有自定义错误页面的服务器块。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

相同的问题使我疯狂了2个星期或更长时间,但顺便说一句,我找到了可行的解决方案,如下所示:

# - error
error_page 502 @offline;
location @offline {
    root /var/web/example.org/www;
    try_files /502.html 502;
} 

我在此答案Nginx won't use custom 502 error page中找到了解决方案,尽管我不明白为什么您的解决方案不起作用,但我认为应该如此。