Desidero nginx restituire un codice 404 quando riceve una richiesta che corrisponde a un modello, ad esempio /test/*
. Come posso configurare nginx per farlo?Configurazione di nginx per restituire un 404 quando un URL corrisponde a un modello
risposta
location ^~ /test/ {
internal;
}
location /test/ {
return 404;
}
['return' è parte di' HttpRewriteModule'] (http://wiki.nginx.org/HttpRewriteModule# ritorno). Rende la sua posizione padre sempre restituisce lo stato dato, che è esattamente ciò che vuole il richiedente. –
bisogno di aggiungere "^ ~" per dare a questo incontro una priorità maggiore rispetto blocchi posizione regex.
location ^~ /test/ {
return 404;
}
Altrimenti sarete in una situazione difficile. Ad esempio, se si dispone di un altro blocco posizione, ad esempio
location ~ \.php$ {
...
}
e qualcuno invia una richiesta al http://your_domain.com/test/bad.php, quel blocco posizione regex sarà scelto da nginx per soddisfare la richiesta. Ovviamente non è quello che vuoi. Quindi assicurati di mettere "^ ~" in quel blocco di posizione!
Riferimento: http://wiki.nginx.org/HttpCoreModule#location
[ 'internal' (dal HttpCore' modulo')] (http://wiki.nginx.org/HttpCoreModule#internal) indica la posizione come interni al server. Restituisce 404 per richieste esterne ma può ancora essere il bersaglio di reindirizzamenti interni, riscritture, pagine di errore, ecc. –