Slide 1

Slide 1 text

PROXY Protocol Aware Proxy Server on Node.js Kyoto.js #16 @moznion

Slide 2

Slide 2 text

@moznion Software engineer

Slide 3

Slide 3 text

PROXY Protocol

Slide 4

Slide 4 text

Proxy PROTOCOL - Transport Layer (L4) ൛ͷX-Forwarder-For - Proxy͢ΔࡍʹoriginalͷΞυϨεΛҡ࣋ͯ͠
 Ѽઌ΁ϑΥϫʔυ͢ΔͨΊͷϓϩτίϧ - HAProxy͕ఏএ (ۀքඪ४Έ͍ͨͳʁ) - http://www.haproxy.org/download/1.8/doc/proxy-protocol.txt - AWSͷELBͰ΋αϙʔτͯ͠Δ - V1ͱV2͕͋Δ (ޙड़)

Slide 5

Slide 5 text

PROXY Protocol V1

Slide 6

Slide 6 text

Proxy PROTOCOL V1 - ςΩετϓϩτίϧ - ϑΥʔϚοτ:
 PROXY \r\n - Θ͔Γ΍͍͢Ͱ͢Ͷ

Slide 7

Slide 7 text

PROXY Protocol V2

Slide 8

Slide 8 text

Proxy PROTOCOL V2 - όΠφϦϓϩτίϧ - આ໌ུ (ͪΐͬͱ໘౗͍͘͞) - V1ͱͷػೳ໘Ͱͷେ͖ͳࠩ͸UNIX Domain SocketΛαϙʔτ͍ͯ͠Δ͔Ͳ͏͔

Slide 9

Slide 9 text

Example (V1)

Slide 10

Slide 10 text

Example (V1) PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r\n GET / HTTP/1.1\r\n Host: 192.168.0.11\r\n \r\n

Slide 11

Slide 11 text

Example (V1) PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r\n GET / HTTP/1.1\r\n Host: 192.168.0.11\r\n \r\n طଘͷ௨৴ͷΞλϚʹprepend͢Δ

Slide 12

Slide 12 text

Proxy PROTOCOL - طଘͷ௨৴ͷΞλϚʹprepend͢Δ - γϯϓϧʂ - => ૹ৴ݩ΋ૹ৴ઌ΋ʮPROXY ProtocolΛ࢖͏ʯ ͱ͍͏͜ͱΛࣄલʹ஌͓ͬͯ͘ඞཁ༗Γ - ͞΋ͳ͍ͱͿͬյΕΔ

Slide 13

Slide 13 text

Motivation

Slide 14

Slide 14 text

nodeͰ΋΍Γ͍ͨ΍Μʁ
 ʢੈͷதʹ͸৭ʑͳ͜ͱ͕͋Δʣ

Slide 15

Slide 15 text

proxy-protocol-js - ͱ͍͏Θ͚Ͱॻ͍ͨ - https://github.com/moznion/proxy-protocol-js - TypeScript੡ - V1/V2྆ରԠ - encode/decode྆ରԠ

Slide 16

Slide 16 text

proxy-protocol-js - ۤ࿑ϙΠϯτ:

Slide 17

Slide 17 text

Example Implementation and Demo

Slide 18

Slide 18 text

https://github.com/moznion/proxy- protocol-socket-server-example