![无法显示 nginx 自定义 403](https://linux22.com/image/623661/%E6%97%A0%E6%B3%95%E6%98%BE%E7%A4%BA%20nginx%20%E8%87%AA%E5%AE%9A%E4%B9%89%20403.png)
想知道我是否可以得到一些帮助。我无法提供自定义 403 页面。我正在使用 geoip 模块来阻止一些 ip 地址。我需要提供自定义 xml 文件作为 403。我的问题是,即使我已经按照说明设置了所有内容(我认为),我仍然会得到默认的 nginx 403 页面。请查看我的 /etc/nginx/sites-enabled/default 并告诉我哪里不对劲。
.....
###redirect IP_1
geo $bad_user {
default 0;
bad.ip.1/32 1;
bad.ip.2/32 1;
}
server {
....
####custom 403 error page for ip block
error_page 403 /error.xml;
location = /error.xml {
root /var/www/static;
allow all;
}
####redirect IP_2
if ($bad_user) {
return 403;
}
我已经验证目录和 xml 文件具有正确的权限。如果我禁用 geoip 阻止,我就可以访问 error.xml 文件。如果您有任何想法、意见或我可以提供的其他信息,请告诉我。
感谢您的帮助
答案1
我们能够解决这个问题。错误页面和“如果用户不好”需要放在服务器块中。希望这可以帮助其他人。谢谢你的帮助。
server {
listen 80; ## listen for ipv4
listen [::]:80 default ipv6only=on; ## listen for ipv6
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
location / {
root /var/www;
index index.html index.htm;
allow all;
error_page 403 /error.xml;
if ($bad_user) {
return 403;
}
}
...
}