Moduł HTTP Nginxa
14 July 2008
Comments
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/; }
client_body_in_file_only
Składnia: client_body_in_file_only on|offDomyś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_sizeDomyś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 timeDomyś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 sizeDomyś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 timeDomyś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 sizeDomyś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-typeDomyś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 ] uriDomyś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;
error_page 404 =200 /.empty.gif;
internal
Składnia: internalDomyś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 sizeDomyś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 speedDomyś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;
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 pathDomyś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; }
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 timeDomyś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; }
server { server_name example.com *.example.com; }
server { server_name .example.com; }
server_names_hash_max_size
Składnia: server_names_hash_max_size numberDomyś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 numberDomyś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:- $content_length - wartość "Content-Length" z nagłówków żądań
- $content_type - wartość "Content-Type" z nagłówków żądań
- $document_root - wartość katalogu głównego dla danego żądania
- $document_uri - to samo co $uri
- $host - wartość "Host" z nagłówków żądań lub nazwa serwera
- $limit_rate - zmienna umożliwiająca ograniczenie ilość połączeń
- $request_method - typ żądania: "GET" lub "POST"
- $remote_addr - adres klienta
- $remote_port - port klienta
- $remote_user - nazwa użytkownika uwierzytelnionego przez ngx_http_auth_basic_module
- $request_filename - ścieżka do żądanego pliku
- $request_body_file- ???
- $request_uri - pełen URI z parametrami
- $query_string - to samo co $args
- $scheme - typ połączenia http (http, https). Przykład:
rewrite ^(.+)$ $scheme://example.com$1 redirect;
- $server_protocol - protokół żądania. Zazwyczaj "HTTP/1.0" lub "HTTP/1.1";
- $server_addr - adres serwera docelowego
- $server_name - nazwa serwera docelowego
- $server_port - port serwera docelowego
- $uri - bieżący URI
RkBlog
Comment article