nginx internals

2,192 views

Published on

Published in: Technology
2 Comments
2 Likes
Statistics
Notes
  • Hello sunzixun, I can make a translation into English.

    And, in the case that you are looking for articles on module development, let me give you two links where you can find exactly the same info (and many more). See this:

    http://www.slideshare.net/joshzhu/nginx-internals

    and this:

    http://www.evanmiller.org/nginx-modules-guide.html
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ok , can somebody help me translate this pdf which include the Russian part into EN ?
    thanks a lot
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
2,192
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
52
Comments
2
Likes
2
Embeds 0
No embeds

No notes for slide

nginx internals

  1. 1. FEERSUM ENJINN nginx: inside
  2. 2. Фичи nginx ● event driven ● non-blocking ● modular
  3. 3. Устройство: процессы
  4. 4. Nginx Master ● Мониторит воркеры ● Обработка сигналов -INT — выход -HUP — переконфигурация -USR1 — log rotate
  5. 5. Nginx Worker ● Обработка запросов ● Выполняет команды из мастер- процесса
  6. 6. Cache Manager, Cache Loader ● loader: подгружает информацию о содержимом кеша ● manager: отслеживает протухание записей в кеше
  7. 7. HTTP Request: немного механики
  8. 8. Обработка запроса ● Получить данные, распарсить запрос ● Найти соответствующие сервер и location ● Запустить обработчики фаз ● Сгенерировать ответ ● Применить фильтры к заголовкам и телу ответа ● Отправить клиенту то, что получилось
  9. 9. Фазы обработки ● Post Read (например, для realip) ● Rewrite & read config ● Проверка доступа ● Проверка существования файлов (если надо) ● Генерация контента ● Запись логов
  10. 10. Устройство: модули
  11. 11. Модули ядра ● event ● http main (легко запомнить)
  12. 12. Основные модули ● HTTP Core ● Upstream ● Access ● Rewrite ● Charset ● Log … и другие
  13. 13. И ещё модули (опционально) HTTP Addition SSL Embedded Perl Stub Status FLV WebDAV Gzip Precompression Google Perftools Random Index XSLT GeoIP Secure Link Real IP Image Filter
  14. 14. Модуль Hello World
  15. 15. Что требуется? ● Директивы конфига ● Обработчики ● Установка обработчиков ● Порядок инициализации модуля ● Описание модуля
  16. 16. Директивы конфига static ngx_command_t ngx_http_hello_commands[] = { { ngx_string("hello"), NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS, ngx_http_hello, 0, 0, NULL }, ngx_null_command };
  17. 17. Обработчики static ngx_int_t ngx_http_hello_handler(ngx_http_request_t *r) { /* То, что делает модуль - находится здесь */ return NGX_OK; }
  18. 18. Установка обработчиков static char * ngx_http_hello(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) { ngx_http_core_loc_conf_t *clcf; clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module); clcf->handler = ngx_http_hello_handler; return NGX_CONF_OK; }
  19. 19. Порядок инициализации (контекст) static ngx_http_module_t ngx_http_hello_module_ctx = { NULL, /* preconfiguration */ NULL, /* postconfiguration */ NULL, /* create main configuration */ NULL, /* init main configuration */ NULL, /* create server configuration */ NULL, /* merge server configuration */ NULL, /* create location configurtion */ NULL /* merge location configuration */ }
  20. 20. Описание модуля ngx_module_t ngx_http_hello_module = { NGX_MODULE_V1, &ngx_http_hello_module_ctx, /* module context */ ngx_http_hello_commands, /* module directives */ NGX_HTTP_MODULE, /* module type */ NULL, /* init master */ NULL, /* init module */ NULL, /* init process */ NULL, /* init thread */ NULL, /* exit thread */ NULL, /* exit process */ NULL, /* exit master */ NGX_MODULE_V1_PADDING };
  21. 21. Build It! ● Файл config ngx_addon_name=ngx_http_hello_module HTTP_MODULES="$HTTP_MODULES ngx_http_hello_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_hello_module.c" ● Configure nginx ./configure --add-module=path/to/your/new/module/directory
  22. 22. Инструменты отладки
  23. 23. Valgrind ● Проверка memory leaks
  24. 24. Strace ● Трассировка системных вызовов ● Deadlock detector
  25. 25. GDB ● Где упало? ● Кто записал в память? ● Трассировка
  26. 26. Работает? Grats!

×