Nginx-Benutzerdefiniert 403 kann nicht angezeigt werden

Nginx-Benutzerdefiniert 403 kann nicht angezeigt werden

Ich frage mich, ob ich Hilfe bekommen könnte. Ich kann keine benutzerdefinierte 403-Seite bereitstellen. Ich verwende das GeoIP-Modul, um einige IP-Adressen zu blockieren. Ich muss eine benutzerdefinierte XML-Datei als 403 bereitstellen. Mein Problem ist, dass ich, obwohl ich alles gemäß den Anweisungen eingerichtet habe (glaube ich), immer noch die Standard-403-Seite von Nginx erhalte. Bitte sehen Sie sich meine /etc/nginx/sites-enabled/default an und sagen Sie mir, was nicht stimmt.

.....
###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;
}

Ich habe überprüft, dass Verzeichnisse und XML-Dateien die richtigen Berechtigungen haben. Ich kann auf die Datei error.xml zugreifen, wenn ich die GeoIP-Sperre deaktiviere. Bitte lassen Sie mich wissen, wenn Sie Gedanken, Ideen oder andere Informationen haben, die ich bereitstellen kann.

Vielen Dank für Ihre Hilfe

Antwort1

Wir konnten das Problem lösen. Die Fehlerseite und „if bad user“ mussten im Serverblock sein. Hoffe, das hilft jemand anderem weiter. Danke für die Hilfe.

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;
            }
    }
...
}

verwandte Informationen