nginx 사용자 정의 403을 표시할 수 없습니다.

nginx 사용자 정의 403을 표시할 수 없습니다.

도움을 받을 수 있을지 궁금합니다. 맞춤 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;
            }
    }
...
}

관련 정보