RkBlog

Hardware, programming and astronomy tutorials and reviews.

Główny moduł HTTP Nginx

Poniżej opisana jest lista podstawowych dyrektyw konfigurujących zachowane serwera.

daemon

Składnia: daemon on | off
Domyślnie: on
daemon off;
Nie używaj "daemon" i "master_process" na serwerach produkcyjnych.

debug_points

Składnia: debug_points [stop | abort]
Domyślnie: none
debug_points stop;
Wewnątrz nginxa istnieją punkty umożliwiające zatrzymanie go i podłączenie debugera lub przerwanie działania.

error_log

Składnia: error_log file [ debug | info | notice | warn | error | crit ]
Domyślnie: ${prefix}/logs/error.log
Jeżeli zbudowałeś nginx z --with-debug możesz użyć:
error_log LOGFILE [ debug_core | debug_alloc | debug_mutex | debug_event | debug_http | debug_imap];


include

Składnia: include file | *
Domyślnie: none
Możesz dołączać dodatkowe pliki konfiguracyjne:
include vhosts/*.conf;


lock_file

Ścieżki są względne względem ścieżki podanej przy ./configure dla --prefix=ŚCIEŻKA. Domyślnie jest to /usr/local/nginx. Zaleca się stosowanie ścieżek absolutnych.
Składnia: lock_file file
Domyślnie: compile-time option
lock_file /var/log/lock_file;
Nginx używa accept mutex do serializacji wywołań accept(). Jeżeli skompilowałeś serwer za pomocą gcc, Intel C++ lub SunPro C++ na i386, amd64, sparc64 i ppc64 wtedy nginx używa instrukcji atomowych do zaimplementowania mutexa. W innych przypadkach używany jest plik blokujący (lock file).

master_process

Składnia: master_process on | off
Domyślnie: on
master_process off;
Nie używaj "daemon" i "master_process" na serwerach produkcyjnych.

pid

Składnia: pid file
Domyślnie: compile-time option
pid /var/log/nginx.pid;
Plik pid. Można go wykorzystać dla komendy kill, np. by przeładować konfigurację: kill -HUP `cat /var/log/nginx.pid\`

ssl_engine

Składnia: ssl_engine engine
Domyślnie: system dependent
Możesz określić preferowany silnik openssl jeżeli są jakieś dostępne. Dostępne silniki można wypatrzeć za pomocą openssl engine -t
$ openssl engine -t
(cryptodev) BSD cryptodev engine
     [ available ]
(dynamic) Dynamic engine loading support
     [ unavailable ]


timer_resolution

Składnia: timer_resolution t
Domyślnie: none
timer_resolution 100ms;
Ta dyrektywa umożliwia ograniczenie liczby wywołań gettimeofday(). Domyślnie gettimeofday() jest wywoływane za każdym razem gdy kevent(), epoll, /dev/poll, select(), poll() zwrócą wynik. Gdy jednak potrzebujesz dokładnego czasu w logach przy zapisywaniu $upstream_response_time lub $msec variables wtedy użyj powyższej dyrektywy.

user

Składnia: user użytkownik [grupa]
Domyślnie: nobody nobody
Jeżeli główny proces działa z użytkownika root to nginx wykorzysta setuid()/setgid() do przejścia na odpowiedniego UŻYTKOWNIKA/GRUPĘ. Jeżeli grupa nie będzie podana to przyjmie tą samą nazwę jak nazwa użytkownika. Domyślnie jest to nobody/nobody lub dane podane przy ./configure --user=USER and --group=GROUP
user www users;


worker_cpu_affinity

Składnia: worker_cpu_affinity cpumask [cpumask...]
Domyślnie: none
Tylko dla Linuksa. Za pomocą tej dyrektywy możesz przypisać proces workera do danego CPU. Wywołuje sched_setaffinity()
worker_proceses     4;
worker_cpu_affinity 0001 0010 0100 1000;
Przypisanie każdego z procesów workerów do jednego procesora:
worker_proceses     2;
worker_cpu_affinity 0101 1010;
Przypisuje pierwszego do CPU0/CPU2, drugiego do CPU1/CPU3.

worker_priority

Składnia: worker_priority [-]liczba
Domyślnie: on
Możesz ustawić priorytet dla procesów workerów (nice). Wywołuje setpriority().

worker_processes

Składnia: worker_processes liczba
Domyślnie:
worker_processes 5;
nginx może używać więcej niż jednego workera. Ma to swoje zalety: przy używaniu SMP, do zmniejszenia opóźnień gdy worker czeka na operacje I/O na dysku, by zmniejszyć ilość połączeń przypadających na proces gdy używane jest select()/poll(). "worker_processes" i "worker_connections" z sekcji "event" pozwala na wyliczenie wartości "max_clients":
max_clients = worker_processes * worker_connections


worker_rlimit_core

Składnia: worker_rlimit_core rozmiar
Domyślnie:
Maksymalny rozmiar pliku głównego (core file) dla workera.

worker_rlimit_nofile

Składnia: worker_rlimit_nofile limit
Domyślnie:
Określa wartość maksymalnej ilości deskryptorów pliku, które mogą być otwarte przez dany proces.

worker_rlimit_sigpending

Składnia: worker_rlimit_sigpending limit
Domyślnie:
Linuks dla kernela od 2.6.8. Określa limit sygnałów jakie mogą być zakolejkowane dla ID prawdziwego użytkownika procesu.

working_directory

Składnia: working_directory ścieżka
Domyślnie: --prefix
Określa katalog dla workerów, tylko dla głównych plików (core files).
RkBlog

Nginx - Nowoczesny serwer HTTP i FastCGI, 14 July 2008, Piotr Maliński

Comment article