ngx_http_rewrite_module
14 July 2008
Comments
Ten moduł umożliwia zmianę adresów URI z wykorzystaniem wyrażeń regularnych i przekierowywanie według podanej konfiguracji.break
Składnia: breakDomyślnie: none
Dla bloków: server, location, if
Kończy zestaw reguł:
if ($slow) { limit_rate 10k; break; }
if
Składnia: if (condition) { ... }Domyślnie: none
Dla bloków: server, location
Sprawdza wyrażenie i jeżeli zwróci wartość Prawda konfiguracja zawarta w bloku if zostanie uwzględniona. Obsługuje:
- Nazwy zmiennych; Fałsz przypisywany jest pustym łańcuchom "" oraz zaczynającym się od "0"
- Porównywanie zmiennych za pomocą "=" i "!="
- Sprawdzanie po zmiennej z wykorzystaniem wyrażeń nie zwracających uwagi na wielkość liter (~* i ~ jak i !~* i !~)
- Sprawdzanie istnienia pliku za pomocą "-f" i "!-f" i katalogów za pomocą "-d" i "!-d"
- Sprawdzanie istnienia plików, katalogów czy odnośników symbolicznych za pomocą "-e" i "!-e"
- Sprawdzanie wykonywalności pliku za pomocą "-x" i "!-x"
if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break; } if ($http_cookie ~* "id=([^;]+)(?:;|$)" ) { set $id $1; } if ($request_method = POST ) { return 405; } if (!-f $request_filename) { break; proxy_pass http://127.0.0.1; } if ($slow) { limit_rate 10k; } if ($invalid_referer) { return 403; }
return
Składnia: return codeDomyślnie: none
Dla bloków: server, location, if
Dyrektywa kończy wykonywanie reguł i zwraca kod statusu klientowi. Można skorzystać z kodów: 204, 400, 402-406, 408, 410, 411, 413, 416 i 500-504. Niestandardowy kod 444 zamyka połączenie bez wysyłania nagłówków.
rewrite
Składnia: rewrite wyrażenie łańuch_zmianyDomyślnie: none
Dla bloków: server, location, if
Ta dyrektywa zmienia URI według podanego wyrażenia regularnego i łańcucha zmiany. Jeżeli łańcuch zmiany zaczyna się od http:// to klient zostanie przekierowany a dalsze wykonywanie dyrektywy przerwane. Dodatkowo można dodać jako trzeci parametr flagę:
break - kończy wykonywanie dyrektywy
redirect - zwraca "tymczasowe przekierowanie" z kodem 302. Używane jest jeżeli łańcuch zmiany nie zaczyna się od http://
permanent - zwraca "trwałe przekierowanie" z kodem 301.
Przykłady:
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last; rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last; return 403;
location /download/ { rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break; rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break; return 403; }
set
Składnia: set zmienna wartośćDomyślnie: none
Dla bloków: server, location, if
Ustawia wartość dla zmiennej
uninitialized_variable_warn
Składnia: uninitialized_variable_warn on|offDomyślnie: uninitialized_variable_warn on
Dla bloków: http, server, location, if
Włącza/Wyłącza logowanie ostrzeżeń o niezainicjowanych zmiennych.
RkBlog
Comment article