RkBlog

Hardware, programming and astronomy tutorials and reviews.

Moduł HTTP Nginxa

Opis głównego modułu konfiguracyjnegoi Nginxa odpowiedzialnego za jego podstawową konfigurację, jak i sposobu konfigurowania tego serwera

Poniżej opisana jest lista dyrektyw konfigurujących zachowane serwera związanych z obsługą HTTP.

alias

Składnia: alias file-path|directory-path;
Domyślnie: no
Dla bloków: location
Określa alias - zamiennik dla podanej lokacji
    location  /i/ {
        alias  /spool/w3/images/;
    }
Żądanie "/i/top.gif" zwróci plik "/spool/w3/images/top.gif". Można używać zmiennych w ścieżkach.

client_body_in_file_only

Składnia: client_body_in_file_only on|off
Domyślnie: client_body_in_file_only off
Dla bloków: http, server, location
Dyrektywa umożliwia zapisywanie treści żądań klienta do pliku. Gdy opcja jest włączona plik nie będzie usuwany po wypełnieniu żądania. Dyrektywa do debugowania.

client_body_buffer_size

Składnia: client_body_buffer_size the_size
Domyślnie: client_body_buffer_size 8k/16k
Dla bloków: http, server, location
Określa rozmiar buforu dla treści żądań klienta. Jeżeli treść żądania nie mieści się w buforze to całość lub jego cześć zapisywana jest do tymczasowego pliku. Wartość domyślna w zależności od platformy to 8K lub 16K.

client_body_temp_path

Składnia: client_body_temp_path dir-path [ level1 [ level2 [ level3 ] ] ]
Domyślnie: client_body_temp_path client_body_temp
Dla bloków: http, server, location
Katalog do przechowywania plików tymczasowych z żądaniami.
client_body_temp_path /spool/nginx/client_temp 1 2;
Zaowocuje strukturą
/spool/nginx/client_temp/7/45/00000123457


client_body_timeout

Składnia: client_body_timeout time
Domyślnie: client_body_timeout 60
Dla bloków: http, server, location
Ustawia maksymalny czas na odpowiedź na żądanie klienta. W przypadku przekroczenia tego czasu nginx zwróci "Request time out" (408).

client_header_buffer_size

Składnia: client_header_buffer_size size
Domyślnie: client_header_buffer_size 1k
Dla bloków: http, server
Ustawia rozmiar bufora dla nagłówków żądania klienta. Przeważnie wystarcza 1K. W przypadku dużych cookie czy żądań klientów wap limit może zostać przekroczony, a wtedy nginx umieszcza nagłówek w większym buforze o rozmiarze określonym przez "large_client_header_buffers".

client_header_timeout

Składnia: client_header_timeout time
Domyślnie: client_header_timeout 60
Dla bloków: http, server
Dyrektywa ustawiająca maksymalny czas czytania tytułu żądania klienta. Timeout stosowany jest tylko wtedy jeżeli nagłówek nie został pobrany w jednym etapie odczytu. W przypadku przekroczenia limitu czasu nginx zwraca "Request time out" (408).

client_max_body_size

Składnia: client_max_body_size size
Domyślnie: client_max_body_size 1m
Dla bloków: http, server, location
Ustawia maksymalny rozmiar treści żądania klienta (określanej przez Content-Length w nagłówku). W przypadku przekroczenia limitu nginx zwraca "Request Entity Too Large" (413). Przeglądarki mają problem z interpretacją takiego błędu!

default_type

Składnia: default_type MIME-type
Domyślnie: default_type text/plain
Dla bloków: http, server, location
Przypisuje domyślny typ MIME.

error_page

Składnia: error_page code [ code... ] [ = |=answer-code ] uri
Domyślnie: no
Dla bloków: http, server, location, if in location
Określa odnośniki URL lub ścieżki do plików jakie zostaną wyświetlone w przypadku wystąpienia określonego błędu.
error_page   404          /404.html;
error_page   502 503 504  /50x.html;
error_page   403          http://example.com/forbidden.html;
Można też zmienić kod odpowiedzi z jednego na drugi:
error_page 404 =200 /.empty.gif;


internal

Składnia: internal
Domyślnie: no
Dla bloków: location
Ustala źródło danych jedynie do użytku wewnętrznego. Dla zewnętrznych żądań zwróci "Not found" (404). Wewnętrzne żądania: przekierowanie ustawione w "error_page", polecenie include z modułu ngx_http_ssi_module, modyfikacja żądania przez instrukcję "rewrite" modułu ngx_http_rewrite_module.
error_page   404   /404.html;
location  /404.html {
    internal;
}


keepalive_timeout

Składnia: keepalive_timeout time [ time ]
Domyślnie: keepalive_timeout 75
Dla bloków: http, server, location
Maksymalny czas trwania połączeń keep-alive z klientem. Drugi parametr określa czas timeout w nagłówku odpowiedzi ("Keep-Alive: timeout=CZAS" - rozumiane przez Mozillę i Konquerora, IE zamyka połączenia keep-alive po około 60 sekundach).

large_client_header_buffers

Składnia: large_client_header_buffers number size
Domyślnie: large_client_header_buffers 4 4k/8k
Dla bloków: http, server
Określa rozmiar bufora dla dużych nagłówków. Przekroczenie rozmiaru spowoduje zwrócenie "Request URI too large" (414). Dodatkowo najdłuższy wiersz żądania musi zmieścić się w jednym buforze lub zostanie zwrócony błąd "Bad request" (400).

limit_except

Składnia: limit_except metody {...}
Domyślnie: no
Dla bloków: location
Ogranicza dostęp do metod HTTP dla podanej lokacji.
limit_except  GET {
    allow  192.168.1.0/32;
    deny   all;
}


limit_rate

Składnia: limit_rate speed
Domyślnie: no
Dla bloków: http, server, location, if in location
Określa (maksymalną) prędkość połączenia - wysyłania odpowiedzi do klienta. Podana wartość określa wysyłane bajty na sekundę. Ograniczenie dotyczy pojedynczego połączenia. Jeżeli klient nawiązuje połączenia, wtedy sumarycznie będzie miał dwa razy większą szybkość. Można również skorzystać z "$limit_rate":
server {
    if ($slow) {
        set $limit_rate  4k;
    }
    ...
}


listen

Składnia: listen address:port [ default [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind ] ]
Domyślnie: listen 80
Dla bloków: server
Określa adres i/lub port, na których serwer ma przyjmować/oczekiwać na połączenia. Przykłady:
listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000;
Przy podaniu samego adresu używany jest port 80.

location

Składnia: location [=|~|~*|^~] /uri/ { ... }
Domyślnie: no
Dla bloków: server
Ta dyrektywa umożliwia ustawienie konfiguracji specyficznej dla podanej ścieżki URI. Przykłady:
location  = / {
    # tylko dla /
    [ configuration A ]
}
location  / {
  # wszystkie żądania jako że wszystkie zaczynają się od /
    [ configuration B ]
}
location ^~ /images/ {
    # dla żądań zaczynających się od /images/ i zatrzymuje dalsze przeszukiwanie,
    [ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
    # żądania kończące się na gif, jpg, jpeg lecz nie zaczynające się na /images/
    [ configuration D ]
}


msie_padding

Składnia: msie_padding [on|off]
Domyślnie: msie_padding on
Dla bloków: http, server, location
Dyrektywa włączająca/wyłączająca opcję msie_padding dla przeglądarek MSIE. Gdy włączona nginx rozszerzy rozmiar nagłówków odpowiedzi do 512 bajtów dla odpowiedzi z kodem większym od 400.

msie_refresh

Składnia: msie_refresh [on|off]
Domyślnie: msie_refresh off
Dla bloków: http, server, location
Włącza lub wyłącza odświerzanie dla MSIE zamiast przekierowań.

optimize_server_names

Składnia: optimize_server_names [ on|off ]
Domyślnie: optimize_server_names on
Dla bloków: http, server
Włącza/Wyłącza sprawdzanie nazwy hosta w wirtualnych serwerach określonych przez nazwy.

port_in_redirect

Składnia: port_in_redirect [ on|off ]
Domyślnie: port_in_redirect on
Dla bloków: http, server, location

root

Składnia: root path
Domyślnie: root html
Dla bloków: http, server, location, if in location
Określa główny katalog dla żądań. Przykład:
location  /i/ {
        root  /spool/w3;
    }
Żądanie "/i/top.gif" zwróci "/spool/w3/i/top.gif".

satisfy_any

Składnia: satisfy_any [ on|off ]
Domyślnie: satisfy_any off
Dla bloków: location
Dyrektywa rozwiązuje kwestię dostępu dla lokacji chronionych hasłem, z wykorzystaniem modułów ngx_http_access_module lub ngx_http_auth_basic_module:
location / {
    satisfy_any  on;
    allow  192.168.1.0/32;
    deny   all;
    auth_basic            "closed site";
    auth_basic_user_file  conf/htpasswd;
}


send_timeout

Składnia: send_timeout the time
Domyślnie: send_timeout 60
Dla bloków: http, server, location
Określa maksymalny czas w jakim klient musi odpowiedzieć po pierwszej operacji wysyłania w celu wykonania kolejnej. Po przekroczeniu tego czasu nginx zamyka połączenie.

sendfile

Składnia: sendfile [ on|off ] Domyślnie: sendfile off Dla bloków: http, server, location Aktywuje lub deaktywuje wykorzystanie sendfile().

server

Składnia: server {...}
Domyślnie: no
Dla bloków: http
Dyrektywa umożliwiająca przypisanie konfiguracji dla wirtualnego serwera.

server_name

Składnia: server_name name [... ]
Domyślnie: server_name hostname
Dla bloków: server
Dyrektywa przypisująca nazwy wirtualnym serwerom:
server {
    server_name   example.com  www.example.com;
}
Pierwsza nazwa staje się bazową nazwą serwera. Domyślnie używana jest nazwa hosta. Można też zastosować "*" zamiast pierwszej części nazwy:
server {
    server_name   example.com  *.example.com;
}
Powyższe konfiguracje można zastąpić:
server {
    server_name  .example.com;
}

server_names_hash_max_size

Składnia: server_names_hash_max_size number
Domyślnie: server_names_hash_max_size 512
Dla bloków: http
Określa maksymalny rozmiar hash-tabel dla nazw serwerów.

server_names_hash_bucket_size

Składnia: server_names_hash_bucket_size number
Domyślnie: server_names_hash_bucket_size 32/64/128
Dla bloków: http

tcp_nodelay

Składnia: tcp_nodelay [on|off]
Domyślnie: tcp_nodelay on
Dla bloków: http, server, location
Włącza/Wyłącza stosowanie TCP_NODELAY dla połączeń keep-alive.

tcp_nopush

Składnia: tcp_nopush [on|off]
Domyślnie: tcp_nopush off
Dla bloków: http, server, location
Włącza/Wyłącza stosowanie TCP_NOPUSH na FreeBSD lub TCP_CORK na Linuksie gdy stosowane jest sendfile.

types

Składnia: types {...}
Dla bloków: http, server, location
Przypisawie rozszerzeń do typów MIME
types {
    text/html    html;
    image/gif    gif;
    image/jpeg   jpg;
}


Zmienne

Moduł ngx_http_core_module wspiera poniżej prezentowane wbudowane zmienne o nazwach odpowiadających zmiennym z Apache:
rewrite ^(.+)$ $scheme://example.com$1 redirect;
RkBlog

14 July 2008;

Comment article