2011-01-12 13 views

Odpowiedz

5
location ^~ /test/ { 
    internal; 
} 
+8

[ 'internal' (od' HttpCore' moduł)] (http://wiki.nginx.org/HttpCoreModule#internal) oznacza położenie jako wewnętrzny do serwera. Zwróci 404 dla żądań zewnętrznych, ale nadal może być celem wewnętrznych przekierowań, przeróbek, stron błędów itp. –

70
location /test/ { 
    return 404; 
} 
+4

['return' jest częścią' HttpRewriteModule'] (http://wiki.nginx.org/HttpRewriteModule# powrót). Dzięki temu jego lokalizacja nadrzędna zawsze zwraca określony status, co jest dokładnie tym, czego żąda osoba żądająca. –

16

Trzeba dodać "^ ~" dać ten mecz wyższy priorytet niż regex bloków miejscu.

location ^~ /test/ { 
    return 404; 
} 

W przeciwnym razie będziesz w trudnej sytuacji. Na przykład, jeśli masz inny blok lokalizacji, takich jak

location ~ \.php$ { 
    ... 
} 

i ktoś wyśle ​​wniosek do http://your_domain.com/test/bad.php, że blok lokalizacja regex będą zbierane przez nginx do obsługi żądania. Oczywiście nie jest to, czego chcesz. Dlatego należy umieścić "^ ~" w tym bloku lokalizacji!

odniesienia: http://wiki.nginx.org/HttpCoreModule#location

Powiązane problemy