Slide 1

Slide 1 text

/HJOYͱ&-#ͷ᠘

Slide 2

Slide 2 text

ࣗݾ঺հ !JOOPTTI ,JJגࣜձࣾ*P5Ϋϥ΢υϓϥοτϑΥʔϜ ιϑτ΢ΣΞΤϯδχΞ %FW0QT +BWB "OTJCMF ࠷ۙ"MFYB εϓϥτΡʔϯ

Slide 3

Slide 3 text

ొ৔͢Δ΋ͷ w/HJOY w0QFO3FTUZ w7BSOJTI w&-#

Slide 4

Slide 4 text

/HJOYͷઃఆ͸᠘͕ଟ͍

Slide 5

Slide 5 text

/HJOYࡾ୒ΫΠζ

Slide 6

Slide 6 text

Ϩεϙϯεϔομ͸Ͳ͏ͳΔʁ location /if {
 set $true 1;
 
 if ($true) {
 add_header X-First 1;
 }
 if ($true) {
 add_header X-Second 2;
 }
 return 204;
 }

Slide 7

Slide 7 text

"9'JSTUͱ94FDPOE#9'JSTUͷΈ $94FDPOEͷΈ location /if {
 set $true 1;
 
 if ($true) {
 add_header X-First 1;
 }
 if ($true) {
 add_header X-Second 2;
 }
 return 204;
 }

Slide 8

Slide 8 text

౴͑$94FDPOEͷΈ location /if {
 set $true 1;
 
 if ($true) {
 add_header X-First 1;
 }
 if ($true) {
 add_header X-Second 2;
 }
 return 204;
 }

Slide 9

Slide 9 text

*G*T&WJM ཧ༝͸ͳ͍

Slide 10

Slide 10 text

Ͱ͸΋͏Ұ໰

Slide 11

Slide 11 text

ϦΫΤετϔομ͸Ͳ͏ͳΔʁ http {
 proxy_set_header X-Foo foo;
 
 server {
 proxy_set_header X-Bar bar;
 
 location /proxysetheader {
 proxy_pass http://localhost:8080;
 proxy_set_header X-Baz baz;
 }
 }
 }

Slide 12

Slide 12 text

"9'PPͱ9#BSͱ9#B[ #9#BSͱ9#B[$9#B[ͷΈ http {
 proxy_set_header X-Foo foo;
 
 server {
 proxy_set_header X-Bar bar;
 
 location /proxysetheader {
 proxy_pass http://localhost:8080;
 proxy_set_header X-Baz baz;
 }
 }
 }

Slide 13

Slide 13 text

౴͑$9#B[ͷΈ http {
 proxy_set_header X-Foo foo;
 
 server {
 proxy_set_header X-Bar bar;
 
 location /proxysetheader {
 proxy_pass http://localhost:8080;
 proxy_set_header X-Baz baz;
 }
 }
 }

Slide 14

Slide 14 text

ཧ༝͸͋Δ

Slide 15

Slide 15 text

QSPYZ@TFU@IFBEFS͸ ಉ͡Ϩϕϧʹఆ͕ٛͳ͍࣌ʹ લͷϨϕϧͷఆٛΛҾ͖ܧ͙

Slide 16

Slide 16 text

http {
 proxy_set_header X-Foo foo;
 
 server {
 proxy_set_header X-Bar bar;
 
 location /proxysetheader {
 proxy_pass http://localhost:8080;
 proxy_set_header X-Foo foo;
 proxy_set_header X-Bar bar;
 proxy_set_header X-Baz baz;
 }
 }
 }

Slide 17

Slide 17 text

˞ͩͨ͠ϨΞέʔεͳͷͰ ϦϥοΫεͯ͠ௌ͍͍ͯͩ͘͞ ͔͜͜Β͕ຊ୊

Slide 18

Slide 18 text

લஔ͖ w7BSOJTIΛ0QFO3FTUZʹஔ͖׵͑Δ࡞ۀ ͰϋϚͬͨ᠘ w)551ϔομ w$POUFOU-FOHUI w5SBOTGFS&ODPEJOHDIVOLFE

Slide 19

Slide 19 text

Ή͔͠Ή͔͋͠Δͱ͜Ζʹ 7BSOJTIͱ0QFO3FTUZ ͕͍·ͨ͠

Slide 20

Slide 20 text

7BSOJTI 0QFO3FTUZ &-#

Slide 21

Slide 21 text

7BSOJTI͸$POUFOU-FOHUIΛ HTTP/1.1 200 OK Server: varnish Date: Tue, 22 Aug 2017 10:44:59 GMT Content-Type: application/json; charset=utf-8 Connection: keep-alive Status: 200 OK Content-Length: 20 Cache-Control: max-age=0, no-cache, no-store

Slide 22

Slide 22 text

0QFO3FTUZ͸USBOTGFSFODPEJOHΛ HTTP/1.1 200 OK Server: openresty Date: Tue, 22 Aug 2017 10:44:59 GMT Content-Type: application/json; charset=utf-8 Connection: keep-alive Status: 200 OK transfer-encoding: chunked Cache-Control: max-age=0, no-cache, no-store

Slide 23

Slide 23 text

όοΫΤϯυ +BWB ͸ಉҰ 7BSOJTI 0QFO3FTUZ - Content-Length: 20 + transfer-encoding: chunked

Slide 24

Slide 24 text

ͲΜͿΒ͜ʙͲΜͿΒ͜ʙ όοΫΤϯυ͸ಉҰͳͷʹ ࠩҟͷ͋ΔϨεϙϯε͕ ྲྀΕ͖ͯ·ͨ͠

Slide 25

Slide 25 text

໰୊఺ w0QFO3FTUZ΁ͷஔ͖׵͑ޙɺϨεϙϯε͕ νϟϯΫԽ͞ΕΔ w)551Λ໊৐ΓͭͭɺνϟϯΫԽ͞Εͨ ϨεϙϯεΛѻ͑ͳ͍ΫϥΠΞϯτ͕ଘࡏ

Slide 26

Slide 26 text

َୀ࣏ νϟϯΫԽ͞ΕͨݪҼΛ ୀ࣏͠Α͏

Slide 27

Slide 27 text

όοΫΤϯυʹ஫໨ HTTP/1.1 200 OK Date: Tue, 22 Aug 2017 10:44:59 GMT Content-Type: application/json; charset=utf-8 Connection: close Content-Length: 20 ↑Content-Length͸෇͍͍ͯͳ͍ Status: 200 OK Cache-Control: max-age=0, no-cache, no-store

Slide 28

Slide 28 text

$POUFOU-FOHUI͸ෆཁʁ wແ͍৔߹ίωΫγϣϯΛΫϩʔζ͢Δ·Ͱ ϝοηʔδΛड৴ w7BSOJTI͸$POUFOU-FOHUIΛউखʹ෇͚ ͍ͯͨ

Slide 29

Slide 29 text

ͦΕͳΒ0QFO3FTUZʹ஫໨ HTTP/1.1 200 OK Server: openresty Date: Tue, 22 Aug 2017 10:44:59 GMT Content-Type: application/json; charset=utf-8 Connection: keep-alive Status: 200 OK Transfer-Encoding: chunked Cache-Control: max-age=0, no-cache, no-store

Slide 30

Slide 30 text

DIVOLFE@USBOTGFS@FODPEJOH w/HJOYͷઃఆ஋ DIVOLFE@USBOTGFS@FODPEJOH͸σϑΥ ϧτͰPO w0QFO3FTUZ͸$POUFOU-FOHUIͷແ͍Ϩ εϙϯεΛνϟϯΫԽ͢Δ

Slide 31

Slide 31 text

7BSOJTI΋0QFO3FTUZ΋Ոདྷʹ νϟϯΫԽ͞ΕͨݪҼΛ ಥ͖ࢭΊͨʜʁ

Slide 32

Slide 32 text

DIVOLFE@USBOTGFS@FODPEJOHΛPGGʹ HTTP/1.1 200 OK Server: openresty Date: Tue, 22 Aug 2017 10:44:59 GMT Content-Type: application/json; charset=utf-8 Connection: keep-alive Status: 200 OK transfer-encoding: chunked Cache-Control: max-age=0, no-cache, no-store

Slide 33

Slide 33 text

Ͳ͏ͤ/HJOYͷ᠘ͩΖ͏ʜ wDIVOLFE@USBOTGFS@FODPEJOHPGG͕ޮ ͔ͳ͍ wͲ͏ߟ͑ͯ΋νϟϯΫԽ͢Δίʔυ͕࣮ߦ͞ ΕΔ͸͕ͣͳ͍ w࠶Ϗϧυ΋όʔδϣϯΞοϓ΋ޮՌͳ͠

Slide 34

Slide 34 text

ʁ /HJOYͷιʔείʔυΛಡΜͰ Ұ͚ͭͩؾ͍ͮͨ͜ͱ͕ʜ

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

HTTP/1.1 200 OK Server: openresty Date: Tue, 22 Aug 2017 10:44:59 GMT Content-Type: application/json; charset=utf-8 Connection: keep-alive Status: 200 OK transfer-encoding: chunked Cache-Control: max-age=0, no-cache, no-store

Slide 37

Slide 37 text

NginxͰ͸ Transfer-Encoding: chunked

Slide 38

Slide 38 text

ΫϥΠΞϯτͰ͸ transfer-encoding: chunked

Slide 39

Slide 39 text

ELBͰ transfer-encoding: chunked ʊਓਓਓਓਓਓʊ ʼɹಥવͷ&-#ɹʻ ʉ:?:?:?:?:ʉ

Slide 40

Slide 40 text

ݪҼ͸&-# w&-#͸$POUFOU-FOHUIͷແ͍Ϩεϙϯε ΛνϟϯΫԽ͢Δ wখจࣈͷUSBOTGFSFODPEJOHΛ෇͚Δ

Slide 41

Slide 41 text

ಉ྅ʮ"-#࢖ͬͯΈͨΒʁʯ

Slide 42

Slide 42 text

"-#Λ࢖ͬͯΈΔͱ wಉ༷ʹϨεϙϯεΛνϟϯΫԽ͢Δ wେจࣈͷ5SBOTGFS&ODPEJOHΛ෇͚Δ͆ Nginx: Transfer-Encoding ELB: transfer-encoding ALB: Transfer-Encoding <= վળʁ͆

Slide 43

Slide 43 text

ղܾࡦ w&-#ͷ5$1ϦεφΛ࢖͏ w΋͘͠͸/-#Λ࢖͏

Slide 44

Slide 44 text

·ͱΊ wେจࣈখจࣈ͸໾ʹཱͭ͆ w)551ඇରԠͷΫϥΠΞϯτ͸ͭΒ͍ w)551ϔομΛकΔʹ͸5$1ϩʔυόϥϯα Λ࢖͏

Slide 45

Slide 45 text

Ҏ্ɺ/HJOYͱ&-#ͷ᠘ͷ࿩ *P5Ϋϥ΢υϓϥοτϑΥʔϜ,JJ LJJDPN ΤϯδχΞืूͯ͠·͢ʂ