{"id":198934,"date":"2013-10-25T14:35:03","date_gmt":"2013-10-25T10:35:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=198934"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=198934","title":{"rendered":"<span class=\"post_title\">\u00ab\u0418\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439\u00bb www \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u0427\u0430\u0441\u0442\u044c 1. Frontend: NGINX + Keepalived (vrrp) \u043d\u0430 CentOS<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/6b0\/bc3\/b5c\/6b0bc3b5c0da200f1c293792e8b0f263.jpg\"\/><\/p>\n<p>  <b>\u042d\u0442\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u00ab\u0418\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 www \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u00bb, \u044f \u0445\u043e\u0447\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043e\u0441\u043d\u043e\u0432\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e www \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 web \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u043d\u0435\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.<br \/>  \u0421\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0438 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043b\u044e\u0431\u043e\u043c\u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u043a\u0442\u043e \u043e\u0441\u0432\u043e\u0438\u043b \u0441\u0438\u043b\u0443 copy-past<br \/>  \u041e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b\u0435 \u0432\u0430\u043c\u0438, \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0438 \u043c\u043d\u0435 \u0438 \u0442\u0435\u043c \u043a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e\u0437\u0436\u0435! \u0422\u0430\u043a \u0447\u0442\u043e \u043b\u044e\u0431\u044b\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f! <\/b><\/p>\n<h4>\u041d\u0430 frontend \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0432\u044f\u0437\u043a\u0443 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0441\u043b\u0443\u0436\u0431\u044b:<\/h4>\n<blockquote><p><b>keepalived<\/b> \u2014 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 VRRP (Virtual Router Redundancy Protocol) \u0434\u043b\u044f Linux. \u0414\u0435\u043c\u043e\u043d keepalived \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0430\u0448\u0438\u043d \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u0431\u043e\u044f \u2014 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0431\u043e\u0439\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u044f \u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443.<\/p><\/blockquote>\n<blockquote><p><b>nginx<\/b> [engine x] \u2014 \u044d\u0442\u043e HTTP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0418\u0433\u043e\u0440\u0435\u043c \u0421\u044b\u0441\u043e\u0435\u0432\u044b\u043c. \u0423\u0436\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u043d \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043c\u043d\u043e\u0433\u0438\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u042f\u043d\u0434\u0435\u043a\u0441, Mail.Ru, \u0412\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u0435 \u0438 \u0420\u0430\u043c\u0431\u043b\u0435\u0440. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435 Netcraft nginx \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043b \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043b 15.08% \u0441\u0430\u043c\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u0432 \u043e\u043a\u0442\u044f\u0431\u0440\u0435 2013 \u0433\u043e\u0434\u0430.<\/p>\n<p>  <b>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/b><\/p>\n<ul>\n<li>\u041e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0438\u043d\u0434\u0435\u043a\u0441\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u044d\u0448 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432;<\/li>\n<li>\u0410\u043a\u0441\u0435\u043b\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c;<\/li>\n<li>\u0410\u043a\u0441\u0435\u043b\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 FastCGI, uwsgi, SCGI \u0438 memcached \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c;<\/li>\n<li>\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0444\u0438\u043b\u044c\u0442\u0440\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u0436\u0430\u0442\u0438\u0435 (gzip), byte-ranges (\u0434\u043e\u043a\u0430\u0447\u043a\u0430), chunked \u043e\u0442\u0432\u0435\u0442\u044b, XSLT-\u0444\u0438\u043b\u044c\u0442\u0440, SSI-\u0444\u0438\u043b\u044c\u0442\u0440, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439; \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0432 SSI-\u0444\u0438\u043b\u044c\u0442\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u043b\u0438 FastCGI, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e;<\/li>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 SSL \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f TLS SNI.<\/li>\n<\/ul>\n<p>  <b>\u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/b><\/p>\n<ul>\n<li>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0435 \u043f\u043e IP-\u0430\u0434\u0440\u0435\u0441\u0443 \u0438 \u0438\u043c\u0435\u043d\u0438;<\/li>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 keep-alive \u0438 pipelined \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439;<\/li>\n<li>\u0413\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438;<\/li>\n<li>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0440\u044b\u0432\u0430 \u0432 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432;<\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u043b\u043e\u0433\u043e\u0432, \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043b\u043e\u0433, \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0440\u043e\u0442\u0430\u0446\u0438\u044f \u043b\u043e\u0433\u043e\u0432;<\/li>\n<li>\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u043e\u0448\u0438\u0431\u043e\u043a 3xx-5xx;<\/li>\n<li>rewrite-\u043c\u043e\u0434\u0443\u043b\u044c: \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 URI \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439;<\/li>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430;<\/li>\n<li>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043f\u043e \u043f\u0430\u0440\u043e\u043b\u044e (HTTP Basic \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f) \u0438 \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u0430;<\/li>\n<li>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 HTTP referer;<\/li>\n<li>\u041c\u0435\u0442\u043e\u0434\u044b PUT, DELETE, MKCOL, COPY \u0438 MOVE;<\/li>\n<li>FLV \u0438 MP4 \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433;<\/li>\n<li>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0442\u0434\u0430\u0447\u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432;<\/li>\n<li>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430;<\/li>\n<li>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 Perl.<\/li>\n<\/ul>\n<p>  <\/p><\/blockquote>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/ddd\/e09\/706\/ddde097064300e85825003790560ad7f.png\"\/><\/p>\n<p>  <b>\u0412\u0430\u0436\u043d\u043e!<\/b> \u0414\u043b\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0438\u0436\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c 2 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043d\u043e\u0434 keepalived<br \/>  \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0442\u043e\u0447\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0448\u0443 \u043c\u0430\u0441\u043a\u0443 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0433\u0434\u0435 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f broadcast, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0442\u043e \u0431\u0443\u0434\u0435\u043c \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u043e\u0447\u0435\u043c\u0443 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0445\u043e\u0442\u0438\u043c! <\/p>\n<p>  <b># \u041c\u043e\u044f \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u0430\u044f \u0441\u0435\u0442\u044c<br \/>  [root@nginx-frontend-01 ~]#<\/b><\/p>\n<pre><code class=\"bash\">nano \/etc\/sysconfig\/network-scripts\/ifcfg-eth2<\/code><\/pre>\n<pre><code class=\"bash\">DEVICE=eth2 BOOTPROTO=static ONBOOT=yes IPADDR=10.100.100.56 NETWORK=10.100.100.0 NETMASK=255.255.255.0 BRAODCAST=10.100.100.255 <\/code><\/pre>\n<p>  <b># \u041f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u0435\u0442\u044c<br \/>  [root@nginx-frontend-01 ~]# <\/b><\/p>\n<pre><code class=\"bash\"> nano \/etc\/sysconfig\/network-scripts\/ifcfg-eth3 <\/code><\/pre>\n<pre><code class=\"bash\">DEVICE=eth3 BOOTPROTO=static ONBOOT=yes IPADDR=72.x.x.1 NETMASK=255.255.255.248 BRAODCAST=72.x.x.55 GATEWAY=72.x.x.49 <\/code><\/pre>\n<p>  <b>\u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u043c\u043e\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u0441\u0435\u0442\u0438, \u043c\u0430\u0441\u043a\u0430 \/29 \u0438 \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u043e\u0439 broadcast x.x.x.55, \u0435\u0441\u043b\u0438 \u0431\u044b \u0431\u044b\u043b\u0430 \u0441\u0435\u0442\u044c \/24, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c x.x.x.255<br \/>  \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u0442\u044c, \u0442\u043e \u0432\u044b \u043e\u0442\u0433\u0440\u0435\u0431\u0435\u0442\u0435 \u043a\u0443\u0447\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c <\/b><\/p>\n<p>  <b># \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c keepalived <\/b>  <\/p>\n<pre><code class=\"bash\">yum install keepalived -y <\/code><\/pre>\n<p>  <b># \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e, \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e! \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0446\u0435\u043b\u044f\u0445 \u0438 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0445 \u0438 \u0440\u0438\u0441\u043a, \u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u043b. \u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c selinux<\/b>  <\/p>\n<pre><code class=\"bash\">sed -i 's\/SELINUX=enforcing\/SELINUX=disabled\/g' \/etc\/sysconfig\/selinux <\/code><\/pre>\n<p>  <b># \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c keepalived \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u043d\u043e\u0434\u0435 nginx-frontend-01, \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e, \u0437\u043d\u0430\u043a \u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f &quot;!&quot; \u0430 \u043d\u0435 &quot;#&quot; <\/b><\/p>\n<pre><code class=\"bash\">mv \/etc\/keepalived\/keepalived.conf \/etc\/keepalived\/keepalived.conf.old && nano \/etc\/keepalived\/keepalived.conf <\/code><\/pre>\n<p>  <b>[root@nginx-frontend-01 ~]# <\/b><\/p>\n<pre><code class=\"bash\"> nano \/etc\/keepalived\/keepalived.conf <\/code><\/pre>\n<pre><code class=\"bash\">! Configuration File for keepalived  global_defs {         notification_email {                 root@localhost         }         notification_email_from root@localhost         smtp_server                     localhost         smtp_connect_timeout            30 ! \u0418\u043c\u0435\u043d\u043d\u043e\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430         router_id                       nginx-frontend-01 }  vrrp_instance nginx2 { ! \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u043d\u043e\u0434\u0430, \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u0430 \u0440\u0435\u0437\u0435\u0440\u0432         state                   BACKUP  ! \u041d\u0430\u0448 \u043f\u0443\u0431\u043b\u0438\u0447\u0438\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441         interface               eth3  ! \u0418\u043d\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 vrrp_instance \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c          virtual_router_id       102  ! \u042d\u0442\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u044d\u0442\u043e\u0439 \u043d\u043e\u0434\u044b \u043f\u0435\u0440\u0435\u0434 \u0434\u0440\u0443\u0433\u0438\u043c\u0438, \u0443 BACKUP \u043e\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0438\u0436\u0435 \u0447\u0435\u043c \u0443 MASTER         priority                100          advert_int              1         dont_track_primary  ! \u0422\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0448 broadcast         mcast_src_ip x.x.x.55  ! \u041f\u0430\u0440\u043e\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439, \u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432         authentication {                 auth_type PASS                 auth_pass b65495f9         } ! \u042d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u043c\u0435\u0442 \u0441\u0435\u0431\u0435 \u0441\u0435\u0440\u0432\u0435\u0440, \u0435\u0441\u043b\u0438 MASTER \u0432 \u0441\u0435\u0442\u0438 \u0443\u043f\u0430\u0434\u0435\u0442         virtual_ipaddress {                 x.x.x.2\/29 dev eth3         }          } vrrp_instance nginx1 { ! \u042d\u0442\u0430 \u043d\u043e\u0434\u0430 - \u043c\u0430\u0441\u0442\u0435\u0440, \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0438 \u0435\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u0434\u0440\u0443\u0433\u0430\u044f, \u0435\u0441\u043b\u0438 \u044d\u0442\u0430 \u0443\u043f\u0430\u0434\u0435\u0442         state                   MASTER  ! \u041d\u0430\u0448 \u043f\u0443\u0431\u043b\u0438\u0447\u0438\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441         interface               eth3  ! \u0418\u043d\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 vrrp_instance \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c          virtual_router_id       101  ! \u0414\u043b\u044f \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0448\u0435 \u0447\u0435\u043c \u0434\u043b\u044f backup         priority                200          advert_int              1         dont_track_primary  ! \u0422\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0448 broadcast         mcast_src_ip x.x.x.55  ! \u041f\u0430\u0440\u043e\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439, \u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432         authentication {                 auth_type PASS                 auth_pass b65495f8         }         virtual_ipaddress { ! \u041d\u043e\u0434\u0430 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0441 \u044d\u0442\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u0435\u0441\u043b\u0438 \u044d\u0442\u0430 \u043d\u043e\u0434\u0430 \u0443\u043f\u0430\u0434\u0435\u0442, \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u0442 \u0434\u0440\u0443\u0433\u0430\u044f                 x.x.x.1\/29 dev eth3                         } ! \u0414\u043b\u044f \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c gateway         virtual_routes {                 default via x.x.x.49 dev eth3 metric 2         } } <\/code><\/pre>\n<p>  <b># \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c keepalived \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043d\u043e\u0434\u0435 nginx-frontend-02 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e, \u0437\u043d\u0430\u043a \u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f &quot;!&quot; \u0430 \u043d\u0435 &quot;#&quot; <\/b><\/p>\n<pre><code class=\"bash\">mv \/etc\/keepalived\/keepalived.conf \/etc\/keepalived\/keepalived.conf.old && nano \/etc\/keepalived\/keepalived.conf <\/code><\/pre>\n<p>  <b>[root@nginx-frontend-02 ~]# <\/b><\/p>\n<pre><code class=\"bash\">nano \/etc\/keepalived\/keepalived.conf <\/code><\/pre>\n<pre><code class=\"bash\">! Configuration File for keepalived  global_defs {         notification_email {                 root@localhost         }         notification_email_from root@localhost         smtp_server                     localhost         smtp_connect_timeout            30 &lt;b&gt;! \u0418\u043c\u0435\u043d\u043d\u043e\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430&lt;\/b&gt;         router_id                       nginx-frontend-02 }  vrrp_instance nginx1 { ! \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u043d\u043e\u0434\u0430, \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u0430 \u0440\u0435\u0437\u0435\u0440\u0432         state                   BACKUP  ! \u041d\u0430\u0448 \u043f\u0443\u0431\u043b\u0438\u0447\u0438\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441         interface               eth3  ! \u0418\u043d\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 vrrp_instance \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c          virtual_router_id       101  ! \u042d\u0442\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u044d\u0442\u043e\u0439 \u043d\u043e\u0434\u044b \u043f\u0435\u0440\u0435\u0434 \u0434\u0440\u0443\u0433\u0438\u043c\u0438, \u0443 BACKUP \u043e\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0438\u0436\u0435 \u0447\u0435\u043c \u0443 MASTER         priority                100          advert_int              1         dont_track_primary  ! \u0422\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0448 broadcast         mcast_src_ip x.x.x.55  ! \u041f\u0430\u0440\u043e\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439, \u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432         authentication {                 auth_type PASS                 auth_pass b65495f9         } ! \u042d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u043c\u0435\u0442 \u0441\u0435\u0431\u0435 \u0441\u0435\u0440\u0432\u0435\u0440, \u0435\u0441\u043b\u0438 MASTER \u0432 \u0441\u0435\u0442\u0438 \u0443\u043f\u0430\u0434\u0435\u0442         virtual_ipaddress {                 x.x.x.1\/29 dev eth3 }          } vrrp_instance nginx2 { ! \u042d\u0442\u0430 \u043d\u043e\u0434\u0430 - \u043c\u0430\u0441\u0442\u0435\u0440, \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0438 \u0435\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u0434\u0440\u0443\u0433\u0430\u044f, \u0435\u0441\u043b\u0438 \u044d\u0442\u0430 \u0443\u043f\u0430\u0434\u0435\u0442         state                   MASTER  ! \u041d\u0430\u0448 \u043f\u0443\u0431\u043b\u0438\u0447\u0438\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441         interface               eth3  ! \u0418\u043d\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 vrrp_instance \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c          virtual_router_id       102  ! \u0414\u043b\u044f \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0448\u0435 \u0447\u0435\u043c \u0434\u043b\u044f backup         priority                200          advert_int              1         dont_track_primary  ! \u0422\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0448 broadcast         mcast_src_ip x.x.x.55  ! \u041f\u0430\u0440\u043e\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439, \u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432         authentication {                 auth_type PASS                 auth_pass b65495f9         } ! \u041d\u043e\u0434\u0430 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0441 \u044d\u0442\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u0435\u0441\u043b\u0438 \u044d\u0442\u0430 \u043d\u043e\u0434\u0430 \u0443\u043f\u0430\u0434\u0435\u0442, \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u0442 \u0434\u0440\u0443\u0433\u0430\u044f         virtual_ipaddress {                 x.x.x.2\/29 dev eth3                         }         virtual_routes { ! \u0414\u043b\u044f \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c gateway                 default via x.x.x.49 dev eth3 metric 2         } } <\/code><\/pre>\n<p>  <b># \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c<\/b><\/p>\n<pre><code class=\"bash\"> chkconfig keepalived on && service keepalived restart <\/code><\/pre>\n<p>  <b># \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0444\u0430\u0435\u0440\u0432\u043e\u043b\u0430, \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0438\u0437 \u0437\u0430 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u043c\u044b \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e \u0444\u0430\u0435\u0440\u0432\u043e\u043b! <\/b><\/p>\n<pre><code class=\"bash\">iptables -A INPUT -i eth3 -p vrrp -j ACCEPT iptables -A OUTPUT -o eth3 -p vrrp -j ACCEPT iptables -A INPUT -d 224.0.0.0\/8 -i eth3 -j ACCEPT iptables-save &gt; \/etc\/sysconfig\/iptables<\/code><\/pre>\n<p>  <b># \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u0448\u0430\u0433<\/b><\/p>\n<pre><code class=\"bash\">echo &quot;net.ipv4.ip_nonlocal_bind=1&quot; &gt;&gt; \/etc\/sysctl.conf && sysctl -p <\/code><\/pre>\n<p>  <b># \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c<\/b> <\/p>\n<pre><code class=\"bash\">\/etc\/init.d\/keepalived restart && tail -f -n 100 \/var\/log\/messages<\/code><\/pre>\n<p>  <b># \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u0430\u043a \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u0449\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0448\u0438 \u043d\u043e\u0434\u044b keepalived<\/b><\/p>\n<pre><code class=\"bash\"> tcpdump -vvv -n -i eth3 host 224.0.0.18 <\/code><\/pre>\n<p>  <b># \u041c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0442\u043e<\/b><\/p>\n<pre><code class=\"bash\">x.x.x.55 &gt; 224.0.0.18: VRRPv2, Advertisement, vrid 102, prio 200, authtype simple, intvl 1s, length 20, addrs: x.x.x.2 auth &quot;b65495f9&quot; 07:50:50.019548 IP (tos 0xc0, ttl 255, id 5069, offset 0, flags [none], proto VRRP (112), length 40) x.x.x.55 &gt; 224.0.0.18: VRRPv2, Advertisement, vrid 101, prio 200, authtype simple, intvl 1s, length 20, addrs: x.x.x.1 auth &quot;b65495f9&quot; <\/code><\/pre>\n<p>  <b>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u0434\u0435\u0440\u0433\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u043e\u0434\u0430 \u0438\u0442\u0434<br \/>  \u0423 \u043d\u0430\u0441 \u0432 \u0441\u0435\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0430 \u044d\u0442\u0438\u0445 \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u043d\u0430 \u043d\u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430\u0448 nginx<\/b><\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/1e2\/a62\/af4\/1e2a62af4e7b9eb0480ef57d0224ef18.png\"\/><\/p>\n<p>  <b># \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 nginx \u0434\u043b\u044f CentOS 6<\/b>  <\/p>\n<pre><code class=\"bash\">rpm -Uhv http:\/\/nginx.org\/packages\/rhel\/6\/noarch\/RPMS\/nginx-release-rhel-6-0.el6.ngx.noarch.rpm<\/code><\/pre>\n<p>  <b># \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c nginx<\/b><\/p>\n<pre><code class=\"bash\">yum update -y yum install nginx <\/code><\/pre>\n<p>  <b># \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0445\u043e\u0441\u0442\u044b \u043f\u043e\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <\/b><\/p>\n<pre><code class=\"bash\">rm -f \/etc\/nginx\/conf.d\/default.conf rm -f \/etc\/nginx\/conf.d\/virtual.conf rm -f \/etc\/nginx\/conf.d\/ssl.conf<\/code><\/pre>\n<p>  <b># \u041f\u0440\u0438\u0432\u043e\u0434\u0438\u043c \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u043a \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u043c\u0443 \u0432\u0438\u0434\u0443<\/b><\/p>\n<pre><code class=\"bash\"> mv  \/etc\/nginx\/nginx.conf \/etc\/nginx\/nginx.conf.old  nano \/etc\/nginx\/nginx.conf <\/code><\/pre>\n<pre><code class=\"bash\">user  nginx;  # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043e\u0436\u0438\u0434\u0430\u044e\u0438\u0449\u0438\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f worker_processes 10;  pid \/var\/run\/nginx.pid;  events { # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043e\u043d\u043b\u0430\u0439\u043d \tworker_connections 1024;  # epoll \u2014 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 Linux 2.6+ http:\/\/nginx.org\/ru\/docs\/events.html         use epoll;  # \u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u043d\u043e\u0432\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f multi_accept on;  } error_log  \/var\/log\/nginx\/error.log warn;  http {     include       \/etc\/nginx\/mime.types;     default_type  application\/octet-stream;      log_format  main  '$remote_addr - $remote_user [$time_local] &quot;$request&quot; '                       '$status $body_bytes_sent &quot;$http_referer&quot; '                       '&quot;$http_user_agent&quot; &quot;$http_x_forwarded_for&quot;';      access_log  \/var\/log\/nginx\/access.log  main;          connection_pool_size            256;         client_header_buffer_size       4k; \tclient_max_body_size 100m;         large_client_header_buffers     8 8k;         request_pool_size               4k;  \toutput_buffers  1 32k;         postpone_output 1460;  # \u0412\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0443\u0434\u0443\u0442 \u0443\u0436\u0438\u043c\u0430\u0442\u044c\u0441\u044f gzip gzip  on; gzip_min_length 1024; gzip_proxied     any; gzip_proxied expired no-cache no-store private auth; gzip_types text\/plain text\/xml application\/xml application\/x-javascript text\/javascript text\/css text\/json;     gzip_comp_level  8;     gzip_disable &quot;MSIE [1-6]\\.(?!.*SV1)&quot;;          sendfile        on;         tcp_nopush      on;         tcp_nodelay     on;          keepalive_timeout       75 20;  \tserver_names_hash_max_size 8192;         ignore_invalid_headers  on;         server_name_in_redirect off;          proxy_buffer_size       8k;         proxy_buffers           8 64k;         proxy_connect_timeout   1000;         proxy_read_timeout      12000;         proxy_send_timeout      12000;  # \u041c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043a\u0435\u0448, \u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044f \u0435\u0433\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \tproxy_cache_path \/var\/cache\/nginx levels=2 keys_zone=pagecache:5m inactive=10m max_size=50m;  # \u041f\u0435\u0440\u0435\u0434\u0430\u0435\u043c backend \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u043b\u044f mod_rpaf         real_ip_header          X-Real-IP;         proxy_set_header        Host            $host;         proxy_set_header        X-Real-IP       $remote_addr;         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;          allow all;      include \/etc\/nginx\/conf.d\/*.conf; } <\/code><\/pre>\n<p>  <b># \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0432 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043d\u0430\u0448 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 vhost<\/b><\/p>\n<pre><code class=\"bash\">nano \/etc\/nginx\/conf.d\/all.conf<\/code><\/pre>\n<pre><code class=\"bash\">upstream web { # \u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0432\u0441\u0435 backend \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 nginx \u0431\u0443\u0434\u0435\u0442 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e fail \u0434\u043b\u044f \u0431\u0430\u043d\u044b backend \u043d\u043e\u0434\u044b \u0438 \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \t# back01 \tserver\t\t10.211.77.131 weight=10 max_fails=60 fail_timeout=2s; \t# back02 \tserver         10.211.77.136 weight=10 max_fails=60 fail_timeout=2s;  } server  {    listen   80; \tlocation \/ { \t\tproxy_pass\thttp:\/\/web; proxy_set_header   Host   $host; proxy_set_header   X-Real-IP  $remote_addr; proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for; } }  <\/code><\/pre>\n<p>  <b># \u0418 \u043d\u0430\u0448 \u043a\u043e\u043d\u0444\u0438\u0433 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0430\u0439\u0442\u0430 \u043f\u043e SSL, \u0434\u043b\u044f \u043a\u0430\u0436\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c<\/b><\/p>\n<pre><code class=\"bash\"> nano \/etc\/nginx\/conf.d\/ssl.conf <\/code><\/pre>\n<pre><code class=\"bash\">upstream ssl {         # back01         # server                10.211.77.131 weight=10 max_fails=60 fail_timeout=2s;         # back02         server 10.100.100.63 weight=10 max_fails=60 fail_timeout=2s;  } server  {    listen   443;  ssl on; ssl_certificate         \/etc\/nginx\/ssl\/GeoTrustCA.crt; ssl_certificate_key     \/etc\/nginx\/ssl\/GeoTrustCA.key;  # \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0433\u043e SSL \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f  ssl_ciphers      RC4:HIGH:!aNULL:!MD5:!kEDH; ssl_session_cache shared:SSL:10m; ssl_prefer_server_ciphers on; ssl_protocols           SSLv3 TLSv1;          location \/ {                 proxy_pass      http:\/\/ssl; proxy_set_header   Host   $host; proxy_set_header   X-Real-IP  $remote_addr; proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for; } }<\/code><\/pre>\n<p>  <b># \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c nginx \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0432 \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443! <\/b><\/p>\n<pre><code class=\"bash\"> \/etc\/init.d\/nginx start && chkconfig nginx on <\/code><\/pre>\n<h4>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435! <\/h4>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/198934\/\"> http:\/\/habrahabr.ru\/post\/198934\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/6b0\/bc3\/b5c\/6b0bc3b5c0da200f1c293792e8b0f263.jpg\"\/><\/p>\n<p>  <b>\u042d\u0442\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u00ab\u0418\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 www \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u00bb, \u044f \u0445\u043e\u0447\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043e\u0441\u043d\u043e\u0432\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e www \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 web \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u043d\u0435\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.<br \/>  \u0421\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0438 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043b\u044e\u0431\u043e\u043c\u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u043a\u0442\u043e \u043e\u0441\u0432\u043e\u0438\u043b \u0441\u0438\u043b\u0443 copy-past<br \/>  \u041e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b\u0435 \u0432\u0430\u043c\u0438, \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0438 \u043c\u043d\u0435 \u0438 \u0442\u0435\u043c \u043a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e\u0437\u0436\u0435! \u0422\u0430\u043a \u0447\u0442\u043e \u043b\u044e\u0431\u044b\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f! <\/b><\/p>\n<h4>\u041d\u0430 frontend \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0432\u044f\u0437\u043a\u0443 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0441\u043b\u0443\u0436\u0431\u044b:<\/h4>\n<blockquote><p><b>keepalived<\/b> \u2014 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 VRRP (Virtual Router Redundancy Protocol) \u0434\u043b\u044f Linux. \u0414\u0435\u043c\u043e\u043d keepalived \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0430\u0448\u0438\u043d \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u0431\u043e\u044f \u2014 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0431\u043e\u0439\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u044f \u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443.<\/p><\/blockquote>\n<blockquote><p><b>nginx<\/b> [engine x] \u2014 \u044d\u0442\u043e HTTP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0418\u0433\u043e\u0440\u0435\u043c \u0421\u044b\u0441\u043e\u0435\u0432\u044b\u043c. \u0423\u0436\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u043d \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043c\u043d\u043e\u0433\u0438\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u042f\u043d\u0434\u0435\u043a\u0441, Mail.Ru, \u0412\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u0435 \u0438 \u0420\u0430\u043c\u0431\u043b\u0435\u0440. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435 Netcraft nginx \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043b \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043b 15.08% \u0441\u0430\u043c\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u0432 \u043e\u043a\u0442\u044f\u0431\u0440\u0435 2013 \u0433\u043e\u0434\u0430.<\/p>\n<p>  <b>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/b><\/p>\n<ul>\n<li>\u041e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0438\u043d\u0434\u0435\u043a\u0441\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u044d\u0448 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432;<\/li>\n<li>\u0410\u043a\u0441\u0435\u043b\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c;<\/li>\n<li>\u0410\u043a\u0441\u0435\u043b\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 FastCGI, uwsgi, SCGI \u0438 memcached \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c;<\/li>\n<li>\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0444\u0438\u043b\u044c\u0442\u0440\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u0436\u0430\u0442\u0438\u0435 (gzip), byte-ranges (\u0434\u043e\u043a\u0430\u0447\u043a\u0430), chunked \u043e\u0442\u0432\u0435\u0442\u044b, XSLT-\u0444\u0438\u043b\u044c\u0442\u0440, SSI-\u0444\u0438\u043b\u044c\u0442\u0440, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439; \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0432 SSI-\u0444\u0438\u043b\u044c\u0442\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u043b\u0438 FastCGI, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e;<\/li>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 SSL \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f TLS SNI.<\/li>\n<\/ul>\n<p>  <b>\u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/b><\/p>\n<ul>\n<li>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0435 \u043f\u043e IP-\u0430\u0434\u0440\u0435\u0441\u0443 \u0438 \u0438\u043c\u0435\u043d\u0438;<\/li>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 keep-alive \u0438 pipelined \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439;<\/li>\n<li>\u0413\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438;<\/li>\n<li>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0440\u044b\u0432\u0430 \u0432 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432;<\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u043b\u043e\u0433\u043e\u0432, \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043b\u043e\u0433, \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0440\u043e\u0442\u0430\u0446\u0438\u044f \u043b\u043e\u0433\u043e\u0432;<\/li>\n<li>\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u043e\u0448\u0438\u0431\u043e\u043a 3xx-5xx;<\/li>\n<li>rewrite-\u043c\u043e\u0434\u0443\u043b\u044c: \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 URI \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439;<\/li>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430;<\/li>\n<li>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043f\u043e \u043f\u0430\u0440\u043e\u043b\u044e (HTTP Basic \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f) \u0438 \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u0430;<\/li>\n<li>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 HTTP referer;<\/li>\n<li>\u041c\u0435\u0442\u043e\u0434\u044b PUT, DELETE, MKCOL, COPY \u0438 MOVE;<\/li>\n<li>FLV \u0438 MP4 \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433;<\/li>\n<li>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0442\u0434\u0430\u0447\u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432;<\/li>\n<li>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430;<\/li>\n<li>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 Perl.<\/li>\n<\/ul>\n<p>  <\/p><\/blockquote>\n<p>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-198934","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/198934","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=198934"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/198934\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=198934"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=198934"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=198934"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}