
рдЕрдкрдиреА
рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВрдиреЗ
рдЕрдкрд╛рдЪреЗ рдЯреНрд░реИрдлрд┐рдХ рд╕рд░реНрд╡рд░ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рд░рд┐рд╡рд░реНрд╕-рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдореБрдЭрд╕реЗ рдкреВрдЫрд╛ рдЧрдпрд╛ рдХрд┐ nginx рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдЪреВрдВрдХрд┐ рдПрдЯреАрдПрд╕ рдХреЛ рдЕрднреА рднреА рд╕рд╛рдЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдирд┐рдЧреНрдиреЗрдХреНрд╕ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЬрдВрдЧрд▓ рдореЗрдВ рдЬрд╛рдирд╛ рдкрдбрд╝рд╛, рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ ...
рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреА рддрд░рд╣, рд╣рдо
example.com рдХреЛ
example.ru рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗред рдореИрдВ Nginx рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореИрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рдиреНрдпрд╛рд╕ - nginx.confworker_processes 4;
рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд░ рд╕реЗрдЯрдЕрдк - example.conf server { listen 80; server_name example.ru; access_log logs/example.ru.access.log main; error_log logs/example.ru.error.log; index index.html; root /usr/local/nginx/html/example.ru;
рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рдореВрд▓ рд╕рд╛рдЗрдЯ рдХреЗ рдЪрд┐рддреНрд░ рдпрд╣рд╛рдВ рд╕реНрдерд┐рдд рд╣реИрдВ:
http://super-cdn.com/img
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЙрдкрд░реЛрдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдкрд░, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ Nginx рдиреЗ рдлреЙрд░реНрдо рдХреЗ рд╕рднреА рд▓рд┐рдВрдХ рдЫреЛрдбрд╝ рджрд┐рдП рд╣реИрдВ
= http: //super-cdn.com/img/*
рдЕрдиреБрдорд╛рдирд┐рдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдбреЛрдореЗрди рдореЗрдВ рдЕрдВрддрд░ рдХреЗ рдХрд╛рд░рдг рд╣реИред рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдиреБрд╡рд╛рджрд┐рдд рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдЦрд┐рд╕рдХрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрд╡рд╕рд░ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ CDN рд╕реЗ рд▓реЗрддрд╛ рд╣реИ, рд╣рдореЗрдВ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИред рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЬрд╛рджреВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!
рдЦреБрд▓реЗ рдЙрджрд╛рд╣рд░рдг-transform.conf sub_filter 'http://super-cdn.com/img/' 'http://example.ru/img/' ; sub_filter_once off;
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкрд░рд┐рд╡рд░реНрддрди рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ! рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкреИрд░рд╛рдореАрдЯрд░:
./configure --with-http_sub_module
рд╣рдо рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ ... рдмрд┐рдВрдЧреЛ !!! рдзреВрдордзрд╛рдо !!!
рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдЙрдбрд╝ рдЬрд╛рддрд╛ рд╣реИ, рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдЪрд▓рддреЗ-рдлрд┐рд░рддреЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рдЦреБрд╢реА рд╕реЗ рдкреГрд╖реНрда рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдирд┐рдпрдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ ... рд╣рдореЗрдВ рдЪреМрдВрдХрд╛рдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ рдХрд┐ http_sub_module рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ!
рдУрд╣ рдЗрдЧреЛрд░ Sysoev, рдЖрдкрдиреЗ рдЗрд╕ рд░рд╛рдХреНрд╖рд╕реА рддрдереНрдп рдХреЛ рдкреНрд░рд▓реЗрдЦрди рдкреГрд╖реНрда рдореЗрдВ рдХреНрдпреЛрдВ рдЫрд┐рдкрд╛рдпрд╛!
sysoev.ru/nginx/docs/http/ngx_http_sub_module.htmlрдЖрд╣, рдЕрдЧрд░ рдХреЗрд╡рд▓ рд╣рдо рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реА рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рдереЗ! рд▓реЗрдХрд┐рди ... рд░реБрдХ рдЬрд╛рдУ! рдПрдХ рддрд░рдл рднрд╛рд╡рдирд╛рдПрдВ, рдХреНрдпреЛрдВрдХрд┐ рд░реВрд╕реА рдФрд░ рдЪреАрдиреА рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рднрд╛рдИ рд╣реИрдВ! рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЪреАрдиреА рд╡реНрдпрдХреНрддрд┐, рд╡реЗрдЗрдмрд┐рди рдпрд╛рдУ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди 4nginx рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЙрдкрд▓рдмреНрдз рд╣реИ
code.google.com/p/substitutions4nginxрд╣рдо рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рд╣рд╕рдкреВрд░реНрд╡рдХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
subs_filter 'http://super-cdn.com/img/' 'http://example.ru/img/' g; subs_filter '<title[^>]*>(.*?)</title>' '<title> . !</title>' oir;
рдПрдХ рдЖрдлреНрдЯрд░рд╡рд░реНрдб рдХреЗ рдмрдЬрд╛рдп1. рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЗрд╕реЗ рд▓рд╛рдЗрд╡ рдЪреЗрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рд╣реИ рддреЛ рдореИрдВ рдорджрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
2. рдирдЧреАрдиреЗрдХреНрд╕ рдПрдХ рдЧреИрд░-рдорд╛рдирдХ, рдЫреЛрдЯреЗ-рдЕрдиреНрд╡реЗрд╖рдг рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрдЧ рд╣реИ ред
3. рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди 4nginx рдореЙрдбреНрдпреВрд▓ рд░рди-рдЗрди рдирд╣реАрдВ рд╣реИ, рдПрдХ рдмрдЧ рддреБрд░рдВрдд рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдХреЛрдВ рдХреА рднреАрдбрд╝ рдХреА рдЬрд░реВрд░рдд рд╣реИред
4. рдЕрдкрд╛рдЪреЗ рдЯреНрд░реИрдлрд┐рдХ рд╕рд░реНрд╡рд░ рдореЗрдВ рдФрд░ рдиреЗрдЧреНрдиреЗрдХреНрд╕ рдореЗрдВ, рдореБрдЭреЗ рд╡рд╣реА рдмрдЧ рдорд┐рд▓рд╛ред рдЬрд┐рд╕ рдкрд░ рдПрдХ href рдпреБрдХреНрдд рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдЬреИрд╕реЗ рд▓рд┐рдВрдХ рд╡рд╛рд▓реЗ рдЯреИрдЧ рдЦрдЯреНрдЯреЗ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдкреАрд╕реАрдЖрд░рдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдЖ рд░рд╣реА рд╣реИред
ZY рдЖрдкрдХреЛ рдХреМрди рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рджреВрд╕рд░реЗ рдЦрдВрдб рдореЗрдВ рд╕реНрд░реЛрдд lang = "bash" рдХреНрдпреЛрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ!
Zzy рд╣рд╛рдБ рдиреЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХреА, рдХреЛрдб рдкрд░ рдкрд╛рд░реНрд╕рд░ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ:
: //
рдореИрдВ рдпреВрдирд┐рдЯ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ рддрд╛рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреЗрд╢ рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред