RkBlog

Hardware, programming and astronomy tutorials and reviews.

ngx_http_rewrite_module

Przepisywanie URLi za pomocą modułu ngx_http_rewrite_module w Nginx. Załączono przykładowy plik konfiguracyjny

Ten moduł umożliwia zmianę adresów URI z wykorzystaniem wyrażeń regularnych i przekierowywanie według podanej konfiguracji.

break

Składnia: break
Domyś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;
}
Wartość wbudowanej zmiennej $invalid_referer określana jest przez dyrektywę "valid_referers".

return

Składnia: return code
Domyś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_zmiany
Domyś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|off
Domyślnie: uninitialized_variable_warn on
Dla bloków: http, server, location, if
Włącza/Wyłącza logowanie ostrzeżeń o niezainicjowanych zmiennych.
RkBlog

14 July 2008;

Comment article