16강 / 20강

리버스 프록시 — 한 대에 여러 앱을 태운다

nginx 가 문 앞에서 방을 고른다

리버스 프록시 — 한 대에 여러 앱을 태운다
손님은 문 하나로 들어옵니다. 안내인이 어느 방으로 갈지 정해 줍니다.

서버 한 대에 앱이 여럿 있습니다. 이 사이트만 해도 허브가 5316, 파이썬 강의가 5338 … 포트가 서른 개쯤 됩니다.

그렇다고 손님에게 drson.iotok.org:5338 을 치라고 할 수는 없죠. nginx 가 앞에 서서 443 하나로 다 받고, 안에서 나눠 줍니다. 이것이 리버스 프록시입니다.

요청 경로를 넣어 보세요 — 어느 앱의 어느 경로로 가는지 계산해 줍니다.
불러오는 중…

가장 작은 리버스 프록시

server { listen 443 ssl; server_name drson.iotok.org; location / { proxy_pass http://127.0.0.1:5316; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

아래 네 줄이 없으면 앱은 모든 손님이 127.0.0.1 에서 왔다고 믿습니다. 로그도 틀리고, https 인지도 모르게 됩니다.

하위 경로로 나누기 — 끝의 슬래시가 전부다

proxy_pass/py/abc 요청이 앱에 닿을 때
http://127.0.0.1:5338; (슬래시 없음) /py/abc — 접두사가 그대로 간다
http://127.0.0.1:5338/; (슬래시 있음) /abc — 접두사를 떼고 간다
이 강의 앱들은 접두사를 떼고 받은 뒤 <code>X-Forwarded-Prefix</code> 로 다시 알려 줍니다.
Python 브라우저에서 실행
🤔 확인 문제
proxy_pass http://127.0.0.1:5338/; 로 /py/ 를 받았습니다. /py/lesson 요청이 앱에 닿을 때 경로는?