背景
因公司内部域名通常用白名单的方式来进行域名访问限制,想要自定义 403 返回页面
配置
1、开启允许 nginx 使用 error_page 处理错误信息
fastcgi_intercept_errors on;
因为只涉及 nginx ip 白名单,所以只需要开启 fastcgi_intercept_errors 即可,如果需要自定义 上游/代理 服务器的状态吗,则需要开启 proxy_intercept_errors
2、关于 error_page 配置
error_page 403 /403.html 可显示自定义403页面内容,正常返回403状态码。
error_page 403 = /403.html 可显示自定义403页面内容,但返回200状态码。
3、ssi 配置
开启 ssi 配置就可以在 html 文件中使用 nginx 中的自有变量
以下配置就可以展示 nginx 中的 $remote_addr 变量文章来源:https://www.toymoban.com/news/detail-505177.html
<!--# echo var="remote_addr" -->
4、具体配置
也可以配置成返回固定的 html 文件文章来源地址https://www.toymoban.com/news/detail-505177.html
fastcgi_intercept_errors on;
error_page 403 /custom_403.html; #自定义错误页面 uri
location = /custom_403.html {
ssi on; # 使html支持读取变量
ssi_silent_errors on; # 默认值是off,开启后在处理SSI文件出错时不输出错误提示
add_header Content-Type 'text/html';
add_header X-Frame-Options 'SAMEORIGIN';
return 403 '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
Sorry for the inconvenience.<br/>
Please report this message and include the following information to us.<br/>
Thank you very much!</p>
<table>
<tr>
<td>URL:</td>
<td><!--# echo var="scheme" -->://<!--# echo var="host" --><!--# echo var="request_uri" --></td>
</tr>
<tr>
<td>Server:</td>
<td>AMS_PROXY</td>
</tr>
<tr>
<td>Your Ip:</td>
<td><!--# echo var="remote_addr" --></td>
</tr>
<tr>
<td>Date:</td>
<td>
<script language="JavaScript" type="text/javascript">
var enabled = 0; today = new Date();
var date;
M=today.getMonth() + 1
D=today.getDate()
HH=today.getHours()
MM=today.getMinutes()
SS=today.getSeconds()
if (M<10)
{
M="0"+M
}
if (D<10)
{
D="0"+D
}
if (MM<10)
{
MM="0"+MM
}
if (HH<10)
{
HH="0"+HH
}
if (SS<10)
{
SS="0"+SS
}
date = (today.getFullYear()) + "/" + M + "/" + D + " " + HH+":"+MM+":"+SS +"";
document.write(date);
</script>
</td>
</tr>
</table>
<hr/>Powered by Tengine<hr><center>tengine</center>
</body>
</html>';
}
到了这里,关于nginx 自定义403返回页面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!