μ—”μ§„μ—‘μŠ€(Nginx)의 ngx_http_mirror_module λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜λ©΄ λ¦¬λ²„μŠ€ ν”„λ‘μ‹œλ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ „λ‹¬ν•˜λŠ” 일뢀 νŠΈλž˜ν”½μ„ λ³΅μ œν•˜μ—¬ λ‹€λ₯Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ 전달할 수 μžˆλ‹€. μš°λ¦¬λŠ” 이것을 ν™œμš©ν•΄μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ „λ‹¬ν•˜λŠ” νŠΈλž˜ν”½μ„ μ•Œ 수 μ—†λŠ” μƒν™©μ΄μ§€λ§Œ μ–΄λ– ν•œ λ¬Έμ œκ°€ λ°œμƒν•˜κ³  μžˆμ„λ•Œ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€μ–΄μ„œ κ΅¬λ™ν•˜κ³  디버그할 수 μžˆλŠ” ν™˜κ²½μ„ λ§Œλ“€ 수 μžˆλ‹€.

νŠΈλž˜ν”½ 미러링 μ„€μ •

nginx.conf
http { upstream backend_for_test { server app:8081; keepalive 128; } server { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # hop-by-hop proxy_http_version 1.1; location /mtls/ { proxy_pass http://backend; mirror /mirror; mirror_request_body on; } location /mtls_mirror { internal; proxy_pass http://backend_for_test$request_uri; } } }

λ¬Έμ œμ— λŒ€ν•œ 원인을 νŒŒμ•…ν•˜κΈ° μœ„ν•œ μš”μ²­μ— λ°”λ”” 정보가 ν•„μš”ν•˜μ§€ μ•Šμ€ 경우 mirror_request_body μ˜΅μ…˜μ„ λΉ„ν™œμ„±ν™”(off) ν•˜μ„Έμš”.

νŠΈλž˜ν”½ 미러링 좜λ ₯

일반적으둜 μ„œλ²„ 포트 μ˜€ν”ˆμ„ ν™•μΈν•˜λŠ”λ° μ‚¬μš©ν•˜λŠ” Netcat λͺ…λ Ήμ–΄λ₯Ό 톡해 κ°„λ‹¨ν•œ μ„œλ²„λ₯Ό μ‹€ν–‰ν•˜κ³  볡제된 νŠΈλž˜ν”½μ— λŒ€ν•œ 정보λ₯Ό 좜λ ₯ν•΄λ³Ό 수 μžˆλ‹€.

nc -lp localhost 8081

AWS ν™˜κ²½μ—μ„œ μš΄μ˜ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λŒ€ν•œ νŠΈλž˜ν”½ λ―ΈλŸ¬λ§μ€ VPC νŠΈλž˜ν”½ λ―ΈλŸ¬λ§μ„ κ΅¬μ„±ν•˜λŠ” 것이 μ ν•©ν•©λ‹ˆλ‹€.