Asciinema: CentOS (рдкрд╛рдпрдерди 3.4) рдХреЗ рддрд╣рдд 4kb рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рдЕрдкрд▓реЛрдб рдХреЗ рд▓рд┐рдП рдмреБрд░рд╛ рдЕрдиреБрд░реЛрдз

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЬреВрди 2017  ┬╖  58рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: asciinema/asciinema

рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ

рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рд╕реВрдЪрдирд╛:

  • рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг: 1.4.0 (1.1.1 рднреА рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ)
  • OS: CentOS Linux рд░рд┐рд▓реАрдЬрд╝ 7.3.1611
  • рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг: рдкрд╛рдпрдерди 3.4.5
  • рдЙрдкрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ: рдпрдо (рдИрдкреАрдПрд▓ рднрдВрдбрд╛рд░ рд╕реЗ)

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг:

  1. asciinema upload asciicast.json

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░:

рдлрд╝рд╛рдЗрд▓ asciinema.org рдкрд░ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░:

рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рд┐рдВрдЯ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢:

Error: Invalid request: <html><body><h1>400 Bad request</h1>
Your browser sent an invalid request.
</body></html>

рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА:

рдпрджрд┐ zsh ( 4.3.11 (x86_64-redhat-linux-gnu) рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдЯреВрдЯреА рд╣реБрдИ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдУрд╣-рдорд╛рдп-рдЬрд╝рд╢ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдУрд╣-рдорд╛рдИ-рдЬрд╝рд╢ рд╡рд┐рдХрд▓рд╛рдВрдЧ рдпрд╛ рдмреИрд╢ рдПрдХ рд╢реЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реИред

рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ JSON: https://gist.github.com/andyone/b2a883e8c3795a6ad393a715ff7a41df

compatibility help wanted hosting

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рдЕрднреА рдкрд┐рдЫрд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛ рд▓рд┐рдпрд╛ рд╣реИ (Nginx рдореЗрдВ SSL рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ)ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдм @andyone @ThiefMaster @benaryorg @peterbrittain @ThomasWaldmann

рд╕рднреА 58 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореЗрд░реЗ рд▓рд┐рдП рднреА рд╣реЛрддрд╛ рд╣реИред ZSH рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди OMZ рдХрд╛ рдирд╣реАрдВред

$ zsh --version
zsh 5.3.1 (x86_64-pc-linux-gnu)
$ asciinema --version
asciinema 1.4.0

tmpw6byrbv8-asciinema.json

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЕрдЧрд░ рдореИрдВ HT urps рд╕реЗ HTTP url рдХреЛ рдмрджрд▓ рдХрд░ HTTP рд╕рдм рдареАрдХ рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдХрд▓ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХреЗред

рдореИрдВ рдЗрд╕реЗ Centos 7 Vagrant VM рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдмреНрд░рд╛рдЗрдЯрдмреЙрдХреНрд╕ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ (рдПрд╕рдПрд╕рдПрд▓ рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд╕рд╛рде, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдорд╛рдг рдкрддреНрд░) рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╣рдо рдХрд▓ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

@andyone @ThiefMaster рдЕрдм рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЕрднреА рднреА 400 рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджрд╛ рд╣реИред рдХрд░реНрд▓ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛ рдареАрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрд▓ SSL / TLS рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NSS (рдиреЗрдЯрд╡рд░реНрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗрд╡рд╛рдПрдБ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдмреНрд░рд╛рдЗрдЯрдмреЙрдХреНрд╕ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рд╕рд╛рде

рдпрд╣ nginx рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ?

@ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Brightbox рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ Haproxy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ Vagrantfile рдФрд░ рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рдП: https://github.com/sickill/bb-lb-400

@ рд╕рдорд╕реНрдпрд╛ рдЖрдкрдХреЗ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдореЗрдВ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реЗрдЦрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдЬреЛрдВрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдордЧреНрд░ рдЖрдХрд╛рд░ред

рдореИрдВ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдпрд╛ https://ascii.kaos.io рдХреЗ рдЖрдзрд╛рд░ рдкрд░ webkaos (рдпрд╣ BoringSSL рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ nginx рд╣реИ) рдХреЗ рд╕рд╛рде рдЗрд╕ config ред рдЗрд╕ рдкреНрд░реЙрдХреНрд╕реА рдкрд░ рдореЗрд░реА рдФрд░ @ThiefMaster рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЕрдкрд▓реЛрдб рдХреА

рдпрд╣рд╛рдБ рдореИрдВ рдЕрдм рддрдХ рдХреНрдпрд╛ рдЬрд╛рдирддрд╛ рд╣реВрдБ:

HTTP рдЕрдиреБрд░реЛрдз рдмреНрд░рд╛рдЗрдЯрдмреЙрдХреНрд╕ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдареАрдХ рдЪрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди HTTPS рд╡рд╛рд▓реЗ 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз рджреЗрддреЗ рд╣реИрдВ
рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп 4KB рд╕реЗ рдмрдбрд╝рд╛ рд╣реИред

рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо CentOS рдХреЗ рддрд╣рдд HTTPS рдХреЗ рд▓рд┐рдП 400 рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред MacOS рдХреЗ рддрд╣рдд HTTPS рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред (HTTP рд╣рд░ рдЬрдЧрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

рдореИрдВрдиреЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рджреЗрдЦрд╛, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдЕрдВрддрд░ рдХрд╣рд╛рдВ рд╣реИред рдореИрдВрдиреЗ ccOS рдФрд░ macOS (HTTP рджреЛрдиреЛрдВ рдкрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП tcpdump рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдпрд╣ рдорд╛рдирдХрд░ рдХрд┐ рдЕрдиреБрд░реЛрдз рд╕реНрд╡рдпрдВ HTTPS рдХреЗ рд╕рдорд╛рди рд╕реНрд╡рд░реВрдкрд┐рдд рд╣реИ)ред

рдХреЗрд╡рд▓ рдЕрдВрддрд░ macOS рдкрд░ рд╢рд░реАрд░ рд╕реЗ рдкрд╣рд▓реЗ 2 рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, CentOS рдкрд░ 1 рдЦрд╛рд▓реА рд▓рд╛рдЗрди (рд╢рд╛рдпрдж рдЗрди OSes рдкрд░ рдкрд╛рдпрдерди 3 рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ urllib рдХреЗ рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдХрд╛рд░рдг):

CentOS:

POST /api/asciicasts HTTP/1.1
Accept-Encoding: identity
User-Agent: asciinema/1.4.0 CPython/3.4.5 Linux/3.10.0-514.16.1.el7.x86_64-x86_64-with-centos-7.3.1611-Core
Authorization: Basic <61 bytes of base64 encoded credentials>
Content-Length: 13582
Content-Type: multipart/form-data; boundary=c3f4e35afa4a4ce6b65b6420da09b46e
Connection: close
Host: asciinema.org

--c3f4e35afa4a4ce6b65b6420da09b46e
Content-Disposition: form-data; name="asciicast"; filename="asciicast.json"
Content-Type: application/json

<about 13 kb of json>

рдореИрдХ рдУ рдПрд╕:

POST /api/asciicasts HTTP/1.1
Accept-Encoding: identity
Content-Length: 13582
Host: asciinema.org
User-Agent: asciinema/1.4.0 CPython/3.6.1 Darwin/16.5.0-x86_64-i386-64bit
Content-Type: multipart/form-data; boundary=71d5b757e9d1451b9540dc286f74207d
Authorization: Basic <61 bytes of base64 encoded credentials>
Connection: close


--71d5b757e9d1451b9540dc286f74207d
Content-Disposition: form-data; name="asciicast"; filename="asciicast.json"
Content-Type: application/json

<about 13 kb of json>

рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ 4096 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рд╕реЗ 8192 (рдЕрдзрд┐рдХрддрдо) рдкрд░ рдПрд▓рдмреА рдкрд░ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ "рдЕрдиреБрд░реЛрдз рдмрдлрд░ рдЖрдХрд╛рд░" рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЕрдЪрд╛рдирдХ рд╣рд░ рдЬрдЧрд╣ (рд╕рднреА рдУрдПрд╕рдЯреА, рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕), рдареАрдХ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛!

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 4096 рдХреЗ рдмрдлрд░ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдЪ рд╣реИ:

  • рдореИрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдХреЗ рд╕рд╛рде 3MB рд╢рд░реАрд░ рдХреЗ рд╕рд╛рде POST рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ
    MacOS рдкрд░ HTTPS
  • рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрдлрд░ рдЖрдХрд╛рд░ рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рд╣реИ рди рдХрд┐ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдХреЗ рд▓рд┐рдП (рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдЬреЙрди рдиреЗ рдмреНрд░рд╛рдЗрдЯрдмреЙрдХреНрд╕ рд╕реЗ рдХреА рдереА)
  • рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ <4KB рдмреЙрдбреА рдХреЗ рд╕рд╛рде POST рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ
    CentOS рдкрд░ HTTPS
  • рдореИрдВ CentOS рдкрд░ HTTPS рдкрд░ 4KB рдмреЙрдбреА рдХреЗ рд╕рд╛рде POST рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдирд╣реАрдВ рдХрд░ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ
  • рдКрдкрд░ рдмрдлрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рдзрд╛рд░рдгрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреЗрд╡рд▓ рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди ...
  • рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЫреЛрдЯреЗ (~ 330 рдмрд╛рдЗрдЯреНрд╕) рд╣реИрдВ

рдЬрдм рдореИрдВ рд╢рд░реАрд░ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ 8192 рддрдХ "рдЕрдиреБрд░реЛрдз рдмрдлрд░ рдЖрдХрд╛рд░" рдЯрдХрд░рд╛рддрд╛ рд╣реВрдВ
рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рдФрд░ рд╕рдм рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЯрдХрд░рд╛ рдХрд░
рдпрд╣ 8192 рддрдХ рдореИрдВ рдХреЗрд╡рд▓ рд╕рдордп (рдХрдо рд▓реЛрдЧреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд) рдпрд╛ рдпрд╣ рдЦрд░реАрдж рд░рд╣рд╛ рд╣реВрдБ
рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдХреНрдпреЛрдВ?)ред

рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмреНрд░рд╛рдЗрдЯрдмреЙрдХреНрд╕ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╡реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рдмреНрд░рд╛рдЗрдЯрдмреЙрдХреНрд╕ рд╕рд╛рдЗрдб рдкрд░ 8192 рдмрдлрд░ рдЖрдХрд╛рд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ: рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП CentOS рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА @ThmMaster рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдСрдкреНрд╕, рд╕реЙрд░реАред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдмреНрд░рд╛рдЗрдЯрдмреЙрдХреНрд╕ LB рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдбрд╛рд▓реВрдВ рдореИрдВрдиреЗ Nginx рдореЗрдВ SSL рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ред рдпрджрд┐ рдпрд╣ рдирдЧрдиреЗрдХреНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд

рдореИрдВ рдЗрд╕реЗ рд╣рд╛рдкреНрд░реЛрд╕реА рдХреЗ рд╕рд╛рде рдмрд╛рдж рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХреЗ рдмрдЬрд╛рдп рд▓рд┐рдмреНрд░реЗрдПрд╕рдПрд╕рдПрд▓ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╣реИ:

рд╣реЗрдбрд░ рдФрд░ рдмреЙрдбреА рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдПрдХ рдирдИ рд▓рд╛рдЗрди, рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╣реЗрдбрд░ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓рдмреА рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ (рдпрд╣ 2 рдирдИ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ), рдФрд░ рдпрд╣ рд╣реЗрдбрд░, рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рддрд╛ рд░рд╣рддрд╛ рд╣реИ, рдЬреЛ рдЕрдВрддрддрдГ рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдпрджрд┐ LB рдореЗрдВ рдХреБрдЫ рдЪрд░ рдЬреИрд╕реЗ bytes_read (рд╕реЙрдХреЗрдЯ рд╕реЗ рдкрдврд╝реЗ рдЧрдП рдмрд╛рдЗрдЯреНрд╕) рд╣реИрдВ, рддреЛ рдпрд╣ рд╣реЗрдбрд░ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдФрд░ рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ рд╢рд░реАрд░ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк <4kb рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдХрднреА рднреА 4kb рд╕реАрдорд╛ рдХреЛ рдкрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк> 4kb рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
(рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ HTTPS рдХреЗ рддрд╣рдд рд╣реЛрддрд╛ рд╣реИ)

рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рдмрд╕ рдЬрд╝реЛрд░ рд╕реЗ рд╕реЛрдЪреЗрдВ case

рдЕрджреНрдпрддрди рд╕реНрд░реЛрдд рдХреЛрдб рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдирдИ рд▓рд╛рдЗрди рдЬреЛрдбрд╝рддрд╛ рд╣реИ, CentOS рдХреЗ рддрд╣рдд рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЕрднреА рднреА рд╡рд┐рдлрд▓ рд░рд╣рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рд╕рд┐рджреНрдзрд╛рдВрдд рдЧрд▓рдд рд╣реИред

рдпрд╣ HTTPS рдХреЗ рд╕рд╛рде CentOS рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

curl -v -X POST -u $USER:api-token https://asciinema.org/api/asciicasts -F [email protected]

* About to connect() to asciinema.org port 443 (#0)
*   Trying 109.107.38.233...
* Connected to asciinema.org (109.107.38.233) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
*   subject: CN=asciinema.org
*   start date: Jun 07 09:12:00 2017 GMT
*   expire date: Sep 05 09:12:00 2017 GMT
*   common name: asciinema.org
*   issuer: CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US
* Server auth using Basic with user 'vagrant'
> POST /api/asciicasts HTTP/1.1
> Authorization: Basic <...hidden...>
> User-Agent: curl/7.29.0
> Host: asciinema.org
> Accept: */*
> Content-Length: 5658
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------6ca3f3de6469

рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдПрд╕рдПрд╕рдПрд▓ рд▓рд┐рдмрд╛рд╕ рдХрд░реНрд▓ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдПрд╕рдПрд╕рдПрд▓-рд▓реИрдВрдб рдореЗрдВ рдХрд╣реАрдВ рд╣реИ?

рдореБрдЭреЗ рднреА рдРрд╕рд╛ рд╣реА рд▓рдЧрддрд╛ рд╣реИред рдЕрдЬрдЧрд░ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХрд░реНрд▓ рдПрдирдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

@ рдХреИрдВрдбреА ascii.kaos.io рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдирд╣реАрдВ рд╣реИ рдЪрд▓реЛ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ?

рд░реИрдкрд┐рдбрдПрд╕рдПрд╕рдПрд▓ SHA256withRSA

рдЖрдо рддреМрд░ рдкрд░ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╕реЗрдВрдЯреЛрд╕ рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ (рдпрд╛ рдРрд╕рд╛ рд╣реА рдХреБрдЫ) рдХреЗ рд▓рд┐рдП рд░реВрдЯ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЧрд╛рдпрдм рд╣реИ, рд▓реЗрдХрд┐рди рдПрд╕рдПрд╕рдПрд▓ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд▓реЗрд╡рд▓ (400 рдмреИрдб рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ) рдкрд░ рд╣реИ ... Cent

рдЕрдЧрд░ рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЧрд╛рдпрдм рд╣реИ рддреЛ рдпрд╣ рдХрд░реНрд▓ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рд╣рдорд╛рд░рд╛ (рдмреНрд░рд╛рдЗрдЯрдмреЙрдХреНрд╕) рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИрдкреНрд░реЛрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред HTTP RFC рдФрд░ haproxy рдбреЙрдХреНрд╕ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣реЗрдбрд░ рдХреЛ рд╢рд░реАрд░ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ CRLF рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:

https://github.com/haproxy/haproxy/blob/master/doc/internals/http-parsing.txt

рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдкреВрд░реНрдг рд╕реАрдЖрд░рдПрд▓рдПрдл рдХреЗ рдмрдЬрд╛рдп рдпрд╣рд╛рдВ рд╕реАрдЖрд░ рдпрд╛ рдПрд▓рдПрдл рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ?

@sickill рдпрд╣ HA-Proxy 1.7.5 рдкрд░ LibreSSL 2.5.0 рдХреЗ рд╕рд╛рде https://ascii-ha.kaos.ioред рдЗрд╕ рдкреНрд░реЙрдХреНрд╕реА рдкрд░ рдореЗрд░реА рдФрд░ @ThiefMaster рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ, рдФрд░ over-4k.json рдЕрдкрдиреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИред

@ рдХреИрдВрдбреА рдареАрдХ рд╣реИред рддреЛ, рдХреНрдпрд╛ рдЖрдк 4096 рдореЗрдВ tune.bufsize (https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#3.2-tune.bufsize) рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ?

@ рдЬреЛрдирд▓ рдореИрдВрдиреЗ CRLF рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреА рдФрд░ рдпрд╣рд╛рдБ рд╕рдм рдареАрдХ рд╣реИред

рдореИрдВрдиреЗ рджреЛрдиреЛрдВ CentOS рдФрд░ macOS (HTTP рдкрд░, рдлрд┐рд░ рд╕реЗ, HTTP рдкреЗрд▓реЛрдб рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП HTTPS рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ) рдкрд░ рдЕрдиреБрд░реЛрдз tcpdumped рдХрд┐рдпрд╛ред

рдбрдВрдк-centos.pcap.txt рдФрд░ рдбрдВрдк-mac.pcap.txt рдореЗрдВ tcpdump рдХреИрдкреНрдЪрд░ ( tcpdump -s 0 dst port 80 -w dump-centos.pcap.txt ) рд╣реЛрддрд╛ рд╣реИред
рдбрдВрдк-рд╕реЗрдВрдЯреЛрд╕-рд╣реЗрдХреНрд╕.рдЯреИрдХреНрд╕ рдФрд░ рдбрдВрдк-рдореИрдХ-рд╣реЗрдХреНрд╕.рдЯреИрдХреНрд╕ рдореЗрдВ рд╣реЗрдХреНрд╕ рд╕реНрд╡рд░реВрдкрд┐рдд рдбрдВрдк рд╣реЛрддреЗ рд╣реИрдВ ( hexdump -C )ред

рдбрдВрдк-рд╕реЗрдВрдЯреЛрд╕-рд╣реЗрдХреНрд╕.рдЯреИрдХреНрд╕
рдбрдВрдк-рд╕реЗрдВрдЯ
рдбрдВрдк-рдореИрдХ-рд╣реЗрдХреНрд╕.рдЯреИрдХреНрд╕
рдбрдВрдк-mac.pcap.txt

рдпрд╣ рджреЛрдиреЛрдВ OSes рдкрд░ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ CRLF рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирдИ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣реЗрдбрд░ рдФрд░ рдмреЙрдбреА рдХреЗ рдмреАрдЪ рдПрдХ рдЦрд╛рд▓реА рд▓рд╛рдЗрди рд╣реИред

рдмрд╛рдПрдВ CentOS рдкрд░, рджрд╛рдПрдВ MacOS рдкрд░:

centos-mac-comparison

@sickill рдХреЙрдиреНрдлрд╝рд┐рдЧ рдЕрдкрдбреЗрдЯ рдХреА рдЧрдИред over-4k.json рдЕрдкрд▓реЛрдб рдХрд┐рдП рдЧрдПред

@andyone рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ X-Forwarded-Proto рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд▓реМрдЯрд╛ рд╣реБрдЖ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ URL http:// )ред рдХреНрдпрд╛ рдЖрдк http-request set-header X-Forwarded-Proto https if { ssl_fc } рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?

рдпрд╣ рдореЗрд░рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:

frontend www-https
    bind 207.154.241.251:443 ssl crt /etc/ssl/private/kaos.pem
    reqadd X-Forwarded-Proto:\ https
    default_backend www-backend

backend www-backend
    server asciinema-backend asciinema.org:80

рдореБрдЭреЗ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдХрд╣рд╛рдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП?

@ рдХреИрдВрдбреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ backend рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ haproxy рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ)ред

@ рд▓рд┐рдВрдбрди btw, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдк рдЗрд╕ this рдзрдиреНрдпрд╡рд╛рдж рдбрд┐рдмрдЧ рдХреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВ!

рдЖрдЧреЗ рдХреЗ рд▓рд┐рдП рднреА рдордд рднреВрд▓рдирд╛ред рдпрд╣ ssl рд╕рд┐рдлрд░ рдХреЗ рд╕рд╛рде рд╕реЗрдЯрдЕрдк рдХреЛ рдмрд╣реБрдд рдмрд╛рд░реАрдХреА рд╕реЗ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

    tune.bufsize 4096
    tune.ssl.default-dh-param 2048
    tune.maxrewrite 40

frontend www-https
    bind 207.154.241.251:443 ssl no-sslv3 crt /etc/ssl/private/kaos.pem ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
    reqadd X-Forwarded-Proto:\ https
    default_backend www-backend

backend www-backend
    server asciinema-backend asciinema.org:80
    mode http
    option forwardfor
    option httplog

рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдХрд┐рд╕реА рднрд╛рдЧреНрдп рдХреЗ:

    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option                  http-server-close
    option                  forwardfor
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend www-https
    bind 207.154.241.251:443 ssl crt /etc/ssl/private/kaos.pem
    reqadd X-Forwarded-Proto:\ https
    default_backend www-backend

backend www-backend
    http-request set-header X-Forwarded-Proto https
    server asciinema-backend asciinema.org:80

рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрднреА рднреА http:// рд╕рд╛рде рд▓рд┐рдВрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрддреА рд╣реИ improve

@ рдЬреЛрдирд▓ рдпрд╣ рдкреВрд░реНрдг рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ, рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдХрд▓реНрдк defaults рдФрд░ global рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ:

    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    tune.bufsize 4096

    # SSL configuration
    tune.ssl.default-dh-param 2048
    ssl-default-bind-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
    ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
    ssl-default-server-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
    ssl-default-server-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option                  http-server-close
    option                  forwardfor
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend www-https
    bind 207.154.241.251:443 ssl crt /etc/ssl/private/kaos.pem
    reqadd X-Forwarded-Proto:\ https
    default_backend www-backend

backend www-backend
    http-request set-header X-Forwarded-Proto https
    server asciinema-backend asciinema.org:80

рдЕрдЧрд░ @andyone рдХрд╛ рд╣рд╛рдЗрдкреНрд░реЛрдЪ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЕрдм BB рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИ рдФрд░ рд╣рдо рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХреНрд░рд┐рдПрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ? рдпрд╣ https://ascii-ha.kaos.io рдФрд░ https://asciinema.org рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ

рдпрд╣ https://ascii-ha.kaos.io рдФрд░ https://asciinema.org рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ

рдирд╣реАрдВред BB LB рдХреЛ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ (рдореИрдВ рд▓рд┐рдмреНрд░реЗрдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ https://ascii-ha.kaos.io рдХреЗ рд▓рд┐рдП LetтАЩs Encrypt рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛

рд╣реЛ рдЧрдпрд╛ - https://ascii.kaos.re
рд╣рд╛-рдкреНрд░реЙрдХреНрд╕реА 1.7.5 (w / рд▓рд┐рдмреНрд░реЗрдПрд╕рдПрд╕рдПрд▓ 2.5.0) + рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ (
рд╡рд┐рдиреНрдпрд╛рд╕:

    tune.bufsize 4096
    tune.ssl.default-dh-param 2048
    tune.maxrewrite 40

frontend www-https
    bind 207.154.241.251:443 ssl no-sslv3 crt /etc/ssl/private/ascii.kaos.re.pem ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
    reqadd X-Forwarded-Proto:\ https
    default_backend www-backend

backend www-backend
    server asciinema-backend asciinema.org:80
    mode http
    option forwardfor
    option httplog

рд▓рдЧрддрд╛ рд╣реИ рд╕рднреА рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред over-4k.json рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдФрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред рдореИрдВ рд▓реЛрдб рд╕рдВрддреБрд▓рди рдФрд░ рдПрд╕рдПрд╕рдПрд▓ рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирдЧрдиреЗрдХреНрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдПрдХрд▓ рдХрд░реНрд▓ рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдиреАрдЪреЗ рдХреА рдУрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдореИрдВ рдПрдХ 5k рдмреЙрдбреА рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдХрд░реНрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо / рдкрд╛рд╕рд╡рд░реНрдб рд╣реИред рдореИрдВ рдПрдХ рдиреЗрдЯрдмреЙрдХреНрд╕ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдмреИрдХрдПрдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд░рд╛рдЗрдЯрдмреЙрдХреНрд╕ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдорд╛рд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрдЪреНрдЪрд╛ рдЕрдиреБрд░реЛрдз рдкрд╛рда рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред рдпрд╣ рд╣рдореЗрд╢рд╛ рдЧреБрдЬрд░рддрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЗрд╕реЗ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдмреИрдХрдПрдВрдб рдкрд░ рдРрдк рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдХрднреА рднреА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрд░реНрд▓ рдФрд░ рдРрдк рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ ubuntu рдФрд░ centos7 рдкрд░ рдХрд░реНрд▓ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдУрдкрдирд╕реЗрд▓ рдХреЗ рд╕рд╛рде (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк рдХрд░реНрдирд▓ рдХрдорд╛рдВрдб рдХреЛ рдХрд░реНрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ sslib рд▓рд┐рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рд╕реЗрдВрдЯреЛрд╕ 7 рдХрд░реНрд▓ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

@ рдЬреЛрдВрд▓ рдХреЛ рдЗрд╕ рдкрд░

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмреИрдХреЗрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ netcat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ

asciinema upload over-4k.json рдмрд░рд╛рдмрд░ рдХрд░реНрд▓ рдХрдореЛрдмреЗрд╢ рдпрд╣реА рд╣реИ:

curl -v -X POST -u test:uuid4 https://asciinema.org/api/asciicasts -F [email protected]

(рдХреА рдЬрдЧрд╣ uuid4 рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде python3 -c 'import uuid; print(uuid.uuid4())' )

рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░реНрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ...

рдореИрдВрдиреЗ asciinema upload рдФрд░ рдЙрдкрд░реЛрдХреНрдд рдХрд░реНрд▓ рдХреЗ tcpdump рдХреА рддреБрд▓рдирд╛ рдХреА рдФрд░ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реНрддрд░ рдкрд░ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж рд▓рдЧреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ tcp рдлрд╝реНрд░реЗрдо рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ (рд╢рд╛рдпрдж рдкреНрд░рддреНрдпреЗрдХ tcp рдкреИрдХреЗрдЯ рдореЗрдВ рдЕрдзрд┐рдХ / рдХрдо рдбреЗрдЯрд╛ рднреЗрдЬрд╛ / рдлрд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдореИрдВрдиреЗ HTTP рдЕрдиреБрд░реЛрдз (http://asciinema.org рдкрд░) CentOS 7 VM рдореЗрдВ tcpflow рдХреЗ рд╕рд╛рде рд▓рд┐рдпрд╛ рд╣реИ:

sudo tcpflow -p -C -i eth0 port 80 >tcpflow-req.txt

рдлрд┐рд░ рджреВрд╕рд░реЗ рд╢реЗрд▓ рдореЗрдВ (рдЙрд╕реА рд╡реАрдПрдо рдореЗрдВ) рднрд╛рдЧ рдЧрдпрд╛:

ASCIINEMA_API_URL=http://asciinema.org asciinema upload /vagrant/over-4k.json

рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЫреЛрдбрд╝ рдХрд░, рдЗрд╕рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛рдЯ рджреАред рдпрд╣рд╛рдБ рдЬреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд╛рдЗрдЯ рдмрд╛рдп рдмрд╛рдЗрдЯ: tcpflow-req.txt

рдореИрдВрдиреЗ asciinema рдХреЗ рдЦрд┐рд▓рд╛рдл рдЗрд╕ рдХреИрдкреНрдЪрд░ рдХрд┐рдП рдЧрдП HTTP рдЕрдиреБрд░реЛрдз рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ред org: 80 nc :

bash-4.4$ (cat tcpflow-req.txt; cat) | nc asciinema.org 80
HTTP/1.1 201 Created
Server: nginx
Date: Mon, 12 Jun 2017 13:30:03 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 48
Connection: close
Status: 201 Created
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Location: http://asciinema.org/a/4lgbbik7li4ywzqrfak0e7eku
ETag: "9beb7ac6bb5981f06fdc71df3947d8b0"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 2a8a8c75-ed06-4741-9adb-e5d276032ded
X-Runtime: 0.360858
Vary: Accept-Encoding
Strict-Transport-Security: max-age=15768000

http://asciinema.org/a/4lgbbik7li4ywzqrfak0e7eku

рд╕рдм рдЕрдЪреНрдЫрд╛ред

рдЕрдм, рдореИрдВрдиреЗ рдПрд╕рдПрд╕рдПрд▓ рдХреЛ рдПрд╕рд╕рд┐рдиреЗрдорд╛ рдкрд░ рднреЗрдЬ рджрд┐рдпрд╛ рд╣реИред org: 443 :

(cat tcpflow-req.txt; cat) | openssl s_client -connect asciinema.org:443

рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИ:

CONNECTED(00000003)
depth=1 /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/CN=asciinema.org
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFFDCCA/ygAwIBAgISBDhrp0YwV5NtleFOG+Zj61lQMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNzA2MDcwOTEyMDBaFw0x
NzA5MDUwOTEyMDBaMBgxFjAUBgNVBAMTDWFzY2lpbmVtYS5vcmcwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+/g237mVels4G9blsZlaeeiURbSp22eGO
T5OZ5As9NyuxSvRVEJrs4xk/RBEkCVgeZspSOmkRLwXG+FSMtjhbqIUt73AUKMdm
4DG+OwkVxjZatskL0wUWRcU7DmyW/Ls/OFJpPPcZ+pqu/v/ek99EiVNoAHJzXMXJ
ZsWy5KLE3fhkrlyMvdIkOkCK5zHOT95t0i8OmdaPIekPBa57VhvnDlUJsYyCF9GN
mP8Qg6OygexyULJGqBwiZ0BN2J6cYwChUlSvqFnkL4OzfixZ+mItuhl1b1vx/N5K
XMtPiM+nc/S+/liIWgtt7HIy9NmrOtSKbPTh3Bv/rfNdaiYx5CUHAgMBAAGjggIk
MIICIDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF
BwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFNAMhQNNwl+/bJjml9hrrHYzBxbf
MB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMG8GCCsGAQUFBwEBBGMw
YTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50LXgzLmxldHNlbmNyeXB0Lm9y
ZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50LXgzLmxldHNlbmNyeXB0Lm9y
Zy8wLwYDVR0RBCgwJoINYXNjaWluZW1hLm9yZ4IVc3RhZ2luZy5hc2NpaW5lbWEu
b3JnMIH+BgNVHSAEgfYwgfMwCAYGZ4EMAQIBMIHmBgsrBgEEAYLfEwEBATCB1jAm
BggrBgEFBQcCARYaaHR0cDovL2Nwcy5sZXRzZW5jcnlwdC5vcmcwgasGCCsGAQUF
BwICMIGeDIGbVGhpcyBDZXJ0aWZpY2F0ZSBtYXkgb25seSBiZSByZWxpZWQgdXBv
biBieSBSZWx5aW5nIFBhcnRpZXMgYW5kIG9ubHkgaW4gYWNjb3JkYW5jZSB3aXRo
IHRoZSBDZXJ0aWZpY2F0ZSBQb2xpY3kgZm91bmQgYXQgaHR0cHM6Ly9sZXRzZW5j
cnlwdC5vcmcvcmVwb3NpdG9yeS8wDQYJKoZIhvcNAQELBQADggEBABxmJxdQQCcy
FpCkiDrB+vonBUCLYSJtrFkmRdmj9W8/ADpC6M/EhYFOCgrO2cmhYfy1SxDAP5Hd
KIhd3p1F931MMXVcxYt2n6FiDJHN531qp6eBzjZsVIgHXS27PAV466IIMTydNQSe
reyDc9fi+q+ji1Gz89nI8lHIOlRt3dzVGT2J3oQidsm4ZuPNJFj4y8MUrbUAOOH6
YY4n395OKV7vWzl7VPKiCWx+zsv4bzr6IGUPlwqCN2e6cppPWE47ugnYsarINCHO
ie5lU4E2N0k2qVWe/+uYbwSUQ0nrEx8R078m6+6EjDkR4VLboLjuV5tGBgHsJLQB
CmLH6CmNCRE=
-----END CERTIFICATE-----
subject=/CN=asciinema.org
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
No client certificate CA names sent
---
SSL handshake has read 3436 bytes and written 456 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES128-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES128-SHA
    Session-ID: AC26CBF8D3719B1DE709A9A8AEAB43D20B14C62085A74604338C512CEA4472C5
    Session-ID-ctx:
    Master-Key: 0C59B1A2B6802D35FAD26DEE139043A853F3E62787E9AA743A8CAFDA95744DB73AB42B511F37EA7D6BB398A352938551
    Key-Arg   : None
    Start Time: 1497273777
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
HTTP/1.0 400 Bad request
Cache-Control: no-cache
Connection: close
Content-Type: text/html

<html><body><h1>400 Bad request</h1>
Your browser sent an invalid request.
</body></html>

/ cc @ рдЬреЛрдирд▓

@sickill рдХреНрдпрд╛ рдЖрдк https://ascii.kaos.re рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЕрдиреБрд░реЛрдз рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

@ рдХреИрдВрдбреА рд╕рд┐рд░реНрдл рдЬрд╛рдБрдЪ рдХреАред рдХреНрдпрд╛ рдпрд╣ (cat tcpflow-req.txt; cat) | openssl s_client -connect ascii.kaos.re:443 - рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдЕрдзрд┐рдХ рдЦреБрджрд╛рдИ рдХреА рд╣реИред centos7 рдкрд░ рдХрд░реНрд▓ nss рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди wget рдУрдкрдирд╕реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдХрд░реНрд▓ рдпрд╛ рд╡рд┐рдЧ рдХреЗ рд╕рд╛рде рднреЗрдЬ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рднреА рдЕрдЬрдЧрд░ httpie рдЙрдкрдХрд░рдг (рдЕрдЬрдЧрд░ 3 рдХреЗ рддрд╣рдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдЯрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ Opensl s_client рдореЗрдВ рднреЗрдЬрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ

рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдЯрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдП, рдЗрд╕рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреЛ рдЪрд┐рдкрдХрд╛рдХрд░ рдУрдкреНрд╕рдирд▓ s_client рдХреЛ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ!

рдореБрдЭреЗ рдЕрдм рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ CRLF рд▓рд╛рдЗрди рдПрдВрдбрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп LF рд▓рд╛рдЗрди рдПрдВрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рднреЗрдЬ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "Opensl s_client" рдПрдХ рдЦрд░рд╛рдм рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕реЗ рдПрдХ рдЙрдЪрд┐рдд http рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИ, рдЪрд╛рд╣реЗ nss рдпрд╛ рдЦреБрд▓рддрд╛ рд╣реИ (ubuntu рдкрд░ рдХрд░реНрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ Opensl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдареАрдХ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбрдмрд▓ рдкреБрд╖реНрдЯрд┐ рдХреА рдЧрдИ рд╣реИ)ред рдХрд┐рд╕реА рдФрд░ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ?

рдореИрдВрдиреЗ рдЕрднреА рдЕрдкрдиреЗ рджрдо рдкрд░ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ 4520 рдХреА рд╕рд╛рдордЧреНрд░реА-рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдмрдиреА рд╣реБрдИ рд╣реИ, рди рдХрд┐ 1000 рд╡рд░реНрдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЫреЛрдбрд╝реЗ рдЧрдП рд╕рдорд╛рди рдЕрдиреБрд░реЛрдз (рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ Content-Length ) рдХреЗ рд╕рд╛рдеред

CRLF рдореЗрд░реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдФрд░ xxd рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкрд╛рдЗрдк рдкрд░ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред
рдореИрдВ OpenBSD рдХреЗ nc (рдЬреЛ TLS рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рдерд╛ред

рдкреНрд░рд▓реЗрдЦрди рд╕реЗ :

рдзреБрди
рдмрдлрд░ рдЖрдХрд╛рд░ рдХреЛ рдЗрд╕ рдЖрдХрд╛рд░ (рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ) рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдХрдо рдореВрд▓реНрдп рдЕрдзрд┐рдХ рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ
рд░реИрдо рдХреА рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рд╣-рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд╕рддреНрд░, рдФрд░ рдЙрдЪреНрдЪрддрд░ рдорд╛рди рдХреБрдЫ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝реА рдХреБрдХреАрдЬрд╝ рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрдиред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 16384 рд╣реИ рдФрд░
рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдкрд░ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдирд╣реАрдВ рдмрджрд▓рдиреЗ рдХреА рдкреБрд░рдЬреЛрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рдХрдо рдорд╛рди рдХреБрдЫ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрдВрдЧреЗ рдЬреИрд╕реЗ рдХрд┐
рдЖрдВрдХрдбрд╝реЗ, рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдХрд╛рд░ рд╕реЗ рдмрдбрд╝реЗ рдореВрд▓реНрдп рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░реЗрдВрдЧреЗ,
рд╕рдВрднрд╡рддрдГ рд╕реНрдореГрддрд┐ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдгред рдХрдо рд╕реЗ рдХрдо рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдзрд┐рдХрддрдо
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЙрд╕реА рдХрд╛рд░рдХ рд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмрдврд╝рд╛ рд╣реИред
рдЕрдЧрд░ HTTP рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ (рдЯреНрдпреВрди.рдмреНрдпреВрдлрд╝реНрд░реАрд╕реЗрдЬрд╝ - tune.maxrewrite) рд╕реЗ рдмрдбрд╝реА рд╣реИ, рддреЛ haproxy рд╣реЛрдЧрд╛
HTTP 400 (рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз) рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдВред рдЗрд╕реА рддрд░рд╣ рдЕрдЧрд░ рдПрдХ HTTP рдкреНрд░рддрд┐рд╕рд╛рдж рдмрдбрд╝рд╛ рд╣реИ
рдЗрд╕ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, haproxy HTTP 502 (рдЦрд░рд╛рдм рдЧреЗрдЯрд╡реЗ) рд▓реМрдЯрд╛рдПрдЧрд╛ред

рдХреЗ рд░реВрдк рдореЗрдВ nginx рдХреЗ рд▓рд┐рдП рдЬреЛ рдкреВрд░реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдордХреНрдЦреА (AFAIK) рдкрд░ рдпрд╛ рдмрд╣реБрдд рдХрдо рд╕реЗ рдХрдо, рдЗрд╕реЗ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдлрд░ рдХрд░рддрд╛ рд╣реИред

no option http-buffer-request рд╡рд┐рдХрд▓реНрдк рд╣реИ , рдЬреЛ, рдЕрдЧрд░ рдореБрдЭреЗ рдорд┐рд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХрд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ ( option http-buffer-request , рдмрд┐рдирд╛ no ):

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

рдореИрдВрдиреЗ рднреА рдпрд╣реА рдорд╛рд░рд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ HTTP рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╣реА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди HTTPS рдирд╣реАрдВ, рдпрд╣ рдЧрд▓рддреА рдкрд░ рдмрдлрд░ рдЖрдХрд╛рд░ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдмреАрдЪ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЗрдбрд░ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред

рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ SSL рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдмрдЧ рд╣реЛ, рдЬреЛ рд╣реЗрдбрд░ рдХреЛ рдереЛрдбрд╝рд╛ рджреВрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ HAProxy рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди HTTP рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рдХрдо рдЕрдиреБрдкрд╛рд▓рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред Https://stackoverflow.com/questions/39286346/extra-space-in-http-headers-gives-400-error-on-haproxy рджреЗрдЦреЗрдВ

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдХрд░рдиреЗ рдХреА рд╡рдХрд╛рд▓рдд рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдЗрд╕реЗ рдбреАрдмрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреЛ рд╕реЗрд╡рд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред

@peterbrittain рдЗрд╕ рд╕рдордп asciinema.org рдмреНрд░рд╛рдЗрдЯрдмреЙрдХреНрд╕ рдХреНрд▓рд╛рдЙрдб рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдирдХреЗ рд╣рд╛рдкреНрд░реЛрдХреНрд╕реА рдХреЙрдиреНрдлрд┐рдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред рд╣рдо рдПрд╕рдПрд╕рдПрд▓ рдХреЛ рдЕрдкрдиреЗ рдирдЧрдиреЗрдХреНрд╕ рдореЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рдереЗ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЬрдм рд╕реЗ рдореИрдВрдиреЗ BB LB рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рд╣реИ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИ (рдХреБрдЫ рдХреЗ рд▓рд┐рдП)ред рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ CentOS, рдпрд╛ рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рддрд╣рдд рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рд╕рдЪ рдХрд╣реВрдБ рддреЛ, рдореБрдЭреЗ рдкрд┐рдЫрд▓реЗ Nginx- рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред SSL рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рд▓реЗрдЯ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЬрд╛рдКрдВрдЧрд╛ред рдЪреВрдВрдХрд┐ рд▓реЗ рдХреЗрд░реНрдЯреНрд╕ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдмреНрд░рд╛рдЗрдЯрдмреЙрдХреНрд╕ рдПрд▓рдмреА рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рд▓реЗ-рдЕрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЦреБрдж рдХреЛ рдХрд╛рдо рдмрдЪрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдмреАрдмреА рдПрд▓рдмреА рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд▓рдЧрддрд╛ рдерд╛ (рдХреНрдпреЛрдВрдХрд┐ asciinema.org рдмреНрд░рд╛рдЗрдЯрдмреЙрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдпреЛрдЬрд┐рдд рд╣реИ рдФрд░ рдЙрдирдХреЗ рдорд╣рд╛рди рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ)ред рдЕрдм рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирдЧрдиреЗрдХреНрд╕ рдореЗрдВ рдЦреБрдж рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдпрдж рдЙрд╕ рд╕рдордп рдХрд╛ 1/10 рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧрд╛ рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╢реВрдЯрд┐рдВрдЧ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛

рдЖрд╣ред рдореИрдВ рдХреМрди рд╕рд╛ рдмрд┐рдЯреНрд╕ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреА рд╕реВрдХреНрд╖реНрдорддрд╛ рд╣рд╛рдЬрд┐рд░ рдирд╣реАрдВ рдерд╛ред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдмреА рдмреА рд╕реЗ рдХреЛрдИ рднрд╛рдЧреНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ?

рдФрд░ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХреЗ рдЙрддреНрддрд░ рдореЗрдВ: рдореЗрд░рд╛ рдмреЙрдХреНрд╕ рдПрдХ CentOS 6 VM рд╣реИред

рдореИрдВрдиреЗ рднреА рд╕рд┐рд░реНрдл рдПрд╕реНрдХрд┐рдирд┐рдорд╛ 1.2.0 (ubuntu 16.04 lts рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ред

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХрд░реНрд▓ рд╣реИрдХ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рдЕрднреА рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрд░реЗ Gentoo [1] рдмреЙрдХреНрд╕ рдкрд░ рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ OpenBSD [2] рдмреЙрдХреНрд╕ рдкрд░ рдирд╣реАрдВред
OpenBSD рдЗрд╕реЗ рдареАрдХ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдФрд░ рдЬрд╛рдВрдЪ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдЬреЗрдВрдЯреЛ рдмреЙрдХреНрд╕ рдкреНрд░рддрд┐ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рдпрдерди рд▓рдХреНрд╖реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:

PYTHON_TARGETS="python3_4 -python3_5"

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрд╕рд╛рдиреА рд╕реЗ python3.5 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорджрдж рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдореИрдВрдиреЗ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝реЗ, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднреВрд▓ рдЧрдпрд╛ред

  • asciinema 1.4.0

    • рдЕрдЬрдЧрд░-рдирд┐рд╖реНрдкрд╛рджрд┐рдд 2.4.5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд

    • рдмрджрд▓реЗ рдореЗрдВ рдкрд╛рдпрдерди 3.4.6 рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ

  • рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ 1.0.2l 25 рдордИ 2017

  • asciinema 1.3.0

    • рдкрд╛рдпрдерди 3.6.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд
  • рд▓рд┐рдмреНрд░реЗрдПрд╕рдПрд╕рдПрд▓ 2.5.2

рдореИрдВрдиреЗ рдЕрднреА рдкрд┐рдЫрд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛ рд▓рд┐рдпрд╛ рд╣реИ (Nginx рдореЗрдВ SSL рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ)ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдм @andyone @ThiefMaster @benaryorg @peterbrittain @ThomasWaldmann

@sickill рдореБрдЭреЗ рдХреЗрд╡рд▓ 85% рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдпрджрд┐ рдпрд╣ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред

@sickill рдореЗрд░реЗ рд▓рд┐рдП рдЕрдм рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред ЁЯСН

рд╣рд╛рдБ, рдореЗрд░реЗ рд▓рд┐рдП рднреА ( asciinema upload ) рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕