рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдЗрдЯ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдмрд▓ рд╕реЗ рд▓рд┐рдВрдХ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рддреЗрдЬ рд╡рд┐рд╕реНрдлреЛрдЯ рдХреЗ рд▓рд┐рдП рдЙрд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ?
рд╕рдВрд╕реНрдХрд░рдг 0.8.46 рдХреЗ рдмрд╛рдж рд╕реЗ, nginx рдиреЗ рдРрд╕реЗ рд╡рд┐рдХрд▓реНрдк рдкреЗрд╢ рдХрд┐рдП рд╣реИрдВ рдЬреЛ рдЧреБрдордирд╛рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢реА рдХреИрд╢рд┐рдВрдЧ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдФрд░ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВред
рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рд╕рд╛рдЗрдЯ рдХреА рдмрд╣реБрдд рдХрдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдпрд╣ рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╕рддреНрд░ рдХреБрдХреА рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ред рдПрдХ рджреБрд░реНрд▓рдн рд╕рд╛рдЗрдЯ рдХреЛ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдФрд░ рд╕рдордп рдХреЗ рд╕рд╛рде nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдореЗрдВ рддреЗрдЬ рд╕реНрдкрд┐рдХ рд╕реЗ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рд╕рд╛рдЗрдЯ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдПрдВрдЧреЗ рдЬрдм рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛред
PHP рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ Apache рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ php.ini рдореЗрдВ рдпрд╛ рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░, session.auto_start рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рд╕рддреНрд░ рдХреБрдХреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╛рдо рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
php_admin_value session.name "session" php_admin_value session.auto_start 0
рдпрджрд┐ рд╕рд╛рдЗрдЯ рдХреЛрдб рдореЗрдВ рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рддреА рд╣реИ, рддреЛ
session_start () рдХреЛ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
if (!empty($_COOKIE[session_name()]) || $_SERVER['REQUEST_METHOD'] == 'POST') { session_id() || session_start(); }
рдЗрд╕рд▓рд┐рдП, рд╕рддреНрд░ рддрднреА рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
- рд╕рддреНрд░ рдХреБрдХреАрдЬрд╝ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ рдпрд╛ рдпрджрд┐
- рд╡реЗ рд╣рдореЗрдВ рдПрдХ рдлрд╝реЙрд░реНрдо рднреЗрдЬрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рдеред
рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП рдерд╛ред
рд╕рддреНрд░ рдХреБрдХреАрдЬрд╝ рдХреЗ рдмрд┐рдирд╛ рдХреИрд╢ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП nginx рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рдЬрдм рд╣рдордиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдЗрдЯ рд╕рд╛рдЗрдЯ рд╡рд┐рдЬрд╝рд┐рдЯрд░ рдХреЛ рд╕рддреНрд░ рдХреБрдХреА рдирд╣реАрдВ рднреЗрдЬрддреА рд╣реИ, рд╣рдо рд╕рддреНрд░ рдХреБрдХреАрдЬрд╝ рдХреЗ рдмрд┐рдирд╛ рдЕрдиреБрд░реЛрдз рдХреИрд╢ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП nginx рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗред
рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЬрдЧрд╣ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рдмреНрд▓реЙрдХ рд╕реЗ рдкрд╣рд▓реЗ nginx рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реЗрдВ:
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=cache:30m max_size=1G; proxy_temp_path /var/lib/nginx/proxy 1 2; proxy_ignore_headers Expires Cache-Control; proxy_cache_use_stale error timeout invalid_header http_502; proxy_cache_bypass $cookie_session; proxy_no_cache $cookie_session;
рдЙрдЪрд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛:
mkdir -p /var/lib/nginx/cache chown -R www-data /var/lib/nginx/cache chmod 700 /var/lib/nginx/cache
рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдерд╛рди рдмреНрд▓реЙрдХ рдореЗрдВ, рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХреА рдЧрдИ рддреАрди рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реЗрдВ:
location / { .... proxy_cache cache; proxy_cache_valid 10m; proxy_cache_valid 404 1m; .... proxy_pass http:
рд╣рдо nginx рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдХреБрдХреАрдЬрд╝ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдЗрдЯ рдХреА рдЧрддрд┐ рдХрд╛ рдЖрдирдВрдж рд▓реЗрддреЗ рд╣реИрдВред
рдлрд╛рдЗрди рдЯреНрдпреВрдирд┐рдВрдЧ рдХреИрд╢рд┐рдВрдЧ
рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдХреБрдЫ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 10 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрддреЗ рдХреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреИрд╢ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
header("X-Accel-Expires: $seconds");
рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рдЙрдВрдЯрд░, рдЙрдкрдпреЛрдЧ:
header("X-Accel-Expires: 0");
рд╢рдХреНрддрд┐ рдкрд░реАрдХреНрд╖рдг
рд╣рдо рд╕реМ рдзрд╛рд░рд╛рдУрдВ рдХреА рддрд╛рдХрдд рдХреЗ рд▓рд┐рдП рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдореБрдЦрдкреГрд╖реНрда рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ:
ab -n 1000 -c 100 http://www.example.com/
рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдЗрдЯ рдиреЗ рдЖрд╕рд╛рдиреА рд╕реЗ 100 рд╕реЗ рдЕрдзрд┐рдХ рдЖрд░рдкреАрдПрд╕ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛, рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдХреЛрдИ рдХреИрд╢ рдирд╣реАрдВ - рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ ~ 70% рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ 503 рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рдЧрдИред
рдлреЛрд░реНрд╕ рдХреИрд╢ рдЕрдкрдбреЗрдЯ
рдпрджрд┐ рдкреНрд░реЙрдХреНрд╕реА_рдЪреЗрдЪреЗ_рдмрд┐рдкрд╛рд╕ рдирд┐рд░реНрджреЗрд╢ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓реЗ рдЧрдП рд╣реИрдВ:
proxy_cache_bypass $cookie_session $http_x_update;
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдкреЗрдЬ рдХреИрд╢ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
curl -s -o /dev/null -H "X-Update: 1" www.example.com
рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖рдХ рдмреЗрд╣рддрд░ рд╣реИ, рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред