Nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдордХреНрдЦреА рдкрд░ рдЕрдиреНрдп рд╡реЗрдмрд╕рд╛рдЗрдЯ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдФрд░ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ





рдЕрдкрдиреА рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрд╛рдЪреЗ рдЯреНрд░реИрдлрд┐рдХ рд╕рд░реНрд╡рд░ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рд░рд┐рд╡рд░реНрд╕-рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдореБрдЭрд╕реЗ рдкреВрдЫрд╛ рдЧрдпрд╛ рдХрд┐ nginx рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдЪреВрдВрдХрд┐ рдПрдЯреАрдПрд╕ рдХреЛ рдЕрднреА рднреА рд╕рд╛рдЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдирд┐рдЧреНрдиреЗрдХреНрд╕ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЬрдВрдЧрд▓ рдореЗрдВ рдЬрд╛рдирд╛ рдкрдбрд╝рд╛, рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ ...

рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреА рддрд░рд╣, рд╣рдо example.com рдХреЛ example.ru рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗред рдореИрдВ Nginx рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореИрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред

рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рдиреНрдпрд╛рд╕ - nginx.conf
worker_processes 4; #    ,      # cat /proc/cpuinfo | grep processor | wc -   http { resolver 127.0.0.1; #    .        reverse proxy.  127.0.0.1   DNS   .   ,     ,            .     resolver  .  DNS        ! include options.conf; include mime.types; #      ,  , -,  iso-8859-1.   - ,    ,  UTF-8. charset utf-8; override_charset on; source_charset iso-8859-1; charset_map iso-8859-1 utf-8 { } #  charset_map - ,     !     charset_map iso-8859-1 _ { }    . #    . ?     ! proxy_cache_path /usr/local/nginx/proxy_temp/ levels=1:2 keys_zone=cache-zone:10m inactive=10m max_size=1000M; #    proxy_store_access user:rw group:rw all:r; #   proxy_cahe  proxy_store        ,        .           . #      тАж include example.conf; } 

рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд░ рд╕реЗрдЯрдЕрдк - 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; #    : rewrite ^/(/broken_page.*) http://www.example.com/$1 permanent; #     тАЬтАЭ ,     Nginx    reverse-proxy.      ,       ,      404.  .    Nginx  Pop-up     . #    ! #   /img/      URI    .  . location ^~ /img/ { #    ?   ,     ! root /usr/local/nginx/html/example.ru; #  ! try_files $uri $uri/ @static; } #      ,                   ,   ,   ,     @static,     .        ()   , ,  ,          .     ,         -. #   : location @static { proxy_pass http://super-cdn.com$uri; #       ,  1-2     .         : http://super-cdn.com/img proxy_store /usr/local/nginx/html/${uri}; expires max; # expires max -    ,        .                  .    ,      .   (  ,  )         nginx -s reload.          firebug     .     Nginx. #      ! access_log logs/2.access.log; error_log logs/2.error.log debug; } #      . location / { include example-transform.conf; #    proxy_pass http://www.example.com; #   proxy_redirect off; proxy_cache cache-zone; #        ? proxy_cache_min_uses 2; proxy_cache_valid 200 1h; #           : proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 


рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рдореВрд▓ рд╕рд╛рдЗрдЯ рдХреЗ рдЪрд┐рддреНрд░ рдпрд╣рд╛рдВ рд╕реНрдерд┐рдд рд╣реИрдВ:
  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 рд╣рд╛рдБ рдиреЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХреА, рдХреЛрдб рдкрд░ рдкрд╛рд░реНрд╕рд░ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ:
  : // 
рдореИрдВ рдпреВрдирд┐рдЯ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ рддрд╛рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреЗрд╢ рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

Source: https://habr.com/ru/post/In114845/


All Articles