Снижение нагрузки на сервер с помощью  NGINX Шмаленюк Николай [email_address]
Что такое  NGINX <ul><li>Быстрый сервер для ресурсов с высоким трафиком.  </li></ul><ul><li>По данным Netcraft за май 2010...
Apache
Как работает  Apache
NGINX + Apache
Возможности  <ul><li>Проксирование </li></ul><ul><li>Кэширование </li></ul><ul><li>Защита от небольших атак </li></ul>
Файл конфигурации <ul><li>…  global settings </li></ul><ul><li>http  { </li></ul><ul><li>…  global settings </li></ul><ul>...
Универсальная конфигурация   <ul><li>server  { </li></ul><ul><li>listen  80; </li></ul><ul><li>server_name  ~^(.*)$; </li>...
Проксирование <ul><li>upstream  backend  { </li></ul><ul><li>server 192.168.0.1 weight=2 max_fails=10  fail_timeout=30s; <...
Проксирование <ul><li>upstream  backend  – так мы описываем имя нашей фермы вебсерверов. Это имя в дальнейшем будет исполь...
Защита от небольших атак <ul><li>http  { </li></ul><ul><li># Директива задаёт зону (zone) и максимально возможные всплески...
Настройка кэширования <ul><li>http { </li></ul><ul><li>#  Директива задаёт путь и другие параметры кэша.  </li></ul><ul><l...
Настройка кэширования  PHP <ul><li>function  hook_init (){ </li></ul><ul><li>global $user; </li></ul><ul><li>elseif (!$use...
SSI  в   кэшированных страницах <ul><li><!--# include  file=&quot;load/block/1&quot;--> </li></ul><ul><li><!--# include  f...
Вопросы
Шмаленюк Николай  [email_address]   http://drupal.ru/node/46123
Upcoming SlideShare
Loading in …5
×

Снижение нагрузки на сервер с помощью NGINX

2,958 views

Published on

Published in: Technology
  • Be the first to comment

Снижение нагрузки на сервер с помощью NGINX

  1. 1. Снижение нагрузки на сервер с помощью NGINX Шмаленюк Николай [email_address]
  2. 2. Что такое NGINX <ul><li>Быстрый сервер для ресурсов с высоким трафиком. </li></ul><ul><li>По данным Netcraft за май 2010 года, nginx используют более 12,98 миллионов сайтов, что делает его третьим по популярности веб-сервером в мире. </li></ul><ul><li>Известные сайты использующие NGINX: Rambler , Yandex , Begun , Wordpress.com , SourceForge.net , vkontakte.ru и др. </li></ul><ul><li>Автор Игорь Сысоев. </li></ul>
  3. 3. Apache
  4. 4. Как работает Apache
  5. 5. NGINX + Apache
  6. 6. Возможности <ul><li>Проксирование </li></ul><ul><li>Кэширование </li></ul><ul><li>Защита от небольших атак </li></ul>
  7. 7. Файл конфигурации <ul><li>… global settings </li></ul><ul><li>http { </li></ul><ul><li>… global settings </li></ul><ul><li>server { </li></ul><ul><li>server_name имя.сайта1 www. имя.сайта1; </li></ul><ul><li>location / { … } </li></ul><ul><li>location /index.html { … } </li></ul><ul><li>location ~* ^.+.(jpg|jpeg|gif)$ { …. } </li></ul><ul><li>location ~* ^.+.(htm|html)$ { …. } </li></ul><ul><li>} </li></ul><ul><li>server { </li></ul><ul><li>server_name имя.сайта1 www. имя.сайта1; </li></ul><ul><li>... </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  8. 8. Универсальная конфигурация <ul><li>server { </li></ul><ul><li>listen 80; </li></ul><ul><li>server_name ~^(.*)$; </li></ul><ul><li>server_name_in_redirect off; </li></ul><ul><li> # test.com /htdocs/test.com/ </li></ul><ul><li> set $domain &quot;/htdocs/$1&quot;; </li></ul><ul><li> root $domain; </li></ul><ul><li>} </li></ul>
  9. 9. Проксирование <ul><li>upstream backend { </li></ul><ul><li>server 192.168.0.1 weight=2 max_fails=10 fail_timeout=30s; </li></ul><ul><li>server 192.168.0.2 weight=2 max_fails=10 fail_timeout=30s; </li></ul><ul><li>server 192.168.0.3 weight=4 max_fails=10 fail_timeout=30s; </li></ul><ul><li>} </li></ul><ul><li>server { </li></ul><ul><li>location / { </li></ul><ul><li>proxy_pass http://backend; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  10. 10. Проксирование <ul><li>upstream backend – так мы описываем имя нашей фермы вебсерверов. Это имя в дальнейшем будет использоваться в настройках модуля proxy </li></ul><ul><li>server 192.168.0.1 – таким образом задаются адреса серверов, которые входят в ферму. </li></ul><ul><li>weight=4 – этот параметр предназначен для балансировки нагрузки и означает что данный сервер будет обслуживать 4 запроса подряд, 5-й запрос пойдет на следующий по списку сервер. </li></ul><ul><li>max_fails=10 fail_timeout=30s – эти 2 параметра связанны и означают, что если за 30 секунд произойдет 10 сбоев сервера(сервер ответит 10 раз кодами отличными от 2ХХ или 3ХХ или не ответит вообще), то будет исключен из работы на 30 секунд. </li></ul>
  11. 11. Защита от небольших атак <ul><li>http { </li></ul><ul><li># Директива задаёт зону (zone) и максимально возможные всплески запросов (burst). </li></ul><ul><li># В случае привышения этого значения запрос завершается кодом &quot;Service unavailable&quot; (503). </li></ul><ul><li>limit_req_zone $binary_remote_addr zone=one:20m rate=2r/s; server { </li></ul><ul><li>... </li></ul><ul><li>location ~ .php$ { </li></ul><ul><li>limit_req zone=one burst=5; </li></ul><ul><li> ... </li></ul><ul><li>} </li></ul><ul><li>location @back { </li></ul><ul><li>limit_req zone=one burst=5; </li></ul><ul><li> ... </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  12. 12. Настройка кэширования <ul><li>http { </li></ul><ul><li># Директива задаёт путь и другие параметры кэша. </li></ul><ul><li>fastcgi_cache_path /tmp/nginx/ levels=1:2 keys_zone=fastcgi_cache:32m max_size=512m inactive=1d; </li></ul><ul><li>server { </li></ul><ul><li>location @back { </li></ul><ul><li>fastcgi_cache fastcgi_cache; </li></ul><ul><li>fastcgi_cache_key &quot;$server_addr$server_port$host$request_uri$request_method$http_if_none_match $http_if_modified_since $cookie_is_user &quot;; </li></ul><ul><li>fastcgi_hide_header &quot;Set-Cookie&quot;; </li></ul><ul><li>fastcgi_ignore_headers &quot;Cache-Control&quot; &quot;Expires&quot;; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  13. 13. Настройка кэширования PHP <ul><li>function hook_init (){ </li></ul><ul><li>global $user; </li></ul><ul><li>elseif (!$user->uid) { </li></ul><ul><li>drupal_set_header(' X-Accel-Expires : 120'); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  14. 14. SSI в кэшированных страницах <ul><li><!--# include file=&quot;load/block/1&quot;--> </li></ul><ul><li><!--# include file=&quot;load/block/2&quot;--> </li></ul><ul><li><!--# include file=&quot;load/block/3&quot;--> </li></ul>
  15. 15. Вопросы
  16. 16. Шмаленюк Николай [email_address] http://drupal.ru/node/46123

×