2017-09-29 1 views
0

Ich habe diesen Server Block:Wie kann ich eine Reihe entfernter IP-Adressen festlegen, ohne eine Liste zu übergeben?

server { 
    server_name doamin.tld; 

    set $maintenance on; 
    if ($remote_addr ~ (127.0.0.1|10.1.1.10)) { 
     set $maintenance off; 
    } 
    if ($maintenance = on) { 
     return 503; 
    } 
    error_page 503 @maintenance; 

    location @maintenance { 
     root /var/www/html/global; 
     rewrite ^(.*)$ /holding-page.html break; 
    } 

    root   html; 
    access_log logs/doamin.tld.access.log; 
    error_log logs/doamin.tld.error.log; 

    include ../conf/default.d/location.conf; 

}

Was ist der richtige Weg, um eine Liste der $remote_addr statt Codierung es wie passieren (127.0.0.1 | etc ...)?

+0

Wenn die Antwort Ihr Problem löst, akzeptieren Sie es bitte. So können zukünftige Besucher es erkennen. – lifeisfoo

Antwort

2

Verwenden Sie die nginx map directive, um den $maintenance Wert entsprechend der $remote_addr:

map $remote_addr $maintenance { 
    default  on; 

    127.0.0.1  off; 
    10.1.1.10  off; 
    10.*.1.*  off; 
} 

server { 
    server_name doamin.tld; 

    if ($maintenance = on) { 
     return 503; 
    } 
    # ... your code ... 
} 

Werfen Sie einen Blick auf die include directive, wenn Sie die IP-Adressen-Liste in einer separaten Datei zu nehmen.

+0

Wildcard-Matching wurde auch für IP-Bereiche der White List hinzugefügt –

Verwandte Themen