StrongLoop의 Express 및 Node.js 교육

StrongLoop / IBM에 의해 제공이 번역.

이 문서는 영문판 문서에 비해 더 오래된 버전일 수도 있습니다. 최신 업데이트를 확인하려면 영문판 문서를 참조하십시오.

프록시 환경에서 Express 사용

프록시 뒤에서 Express 앱을 실행할 때는, (app.set()을 이용하여) 애플리케이션 변수 trust proxy를 다음 표에 나열된 값 중 하나로 설정하십시오.

애플리케이션 변수 trust proxy가 설정되지 않아도 앱은 실행되지만, trust proxy가 구성되지 않으면 프록시의 IP 주소가 클라이언트 IP 주소로 잘못 등록됩니다.

유형
부울

true인 경우, 클라이언트의 IP 주소는 X-Forwarded-* 내의 가장 왼쪽 입력 항목인 것으로 인식됩니다.

false인 경우, 앱이 직접 인터넷에 연결되는 것으로 인식되며 클라이언트의 IP 주소는 req.connection.remoteAddress로부터 도출됩니다. 이 설정이 기본 설정입니다.

IP 주소

신뢰할 IP 주소나 서브넷, 또는 IP 주소 및 서브넷의 배열입니다. 아래의 목록에는 사전에 구성된 서브넷 이름이 표시되어 있습니다.

  • loopback - 127.0.0.1/8, ::1/128
  • linklocal - 169.254.0.0/16, fe80::/10
  • uniquelocal - 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7

다음의 방법 중 하나로 IP 주소를 설정할 수 있습니다.

app.set('trust proxy', 'loopback') // specify a single subnet
app.set('trust proxy', 'loopback, 123.123.123.123') // specify a subnet and an address
app.set('trust proxy', 'loopback, linklocal, uniquelocal') // specify multiple subnets as CSV
app.set('trust proxy', ['loopback', 'linklocal', 'uniquelocal']) // specify multiple subnets as an array

IP 주소 또는 서브넷이 지정되는 경우, 해당 IP 주소 또는 서브넷은 주소 결정 프로세스에서 제외되며, 신뢰할 수 있는 것으로 지정되지 않은 IP 주소 중 애플리케이션 서버에서 가장 가까운 IP 주소가 클라이언트의 IP 주소로 결정됩니다.

숫자

가장 앞의 프록시 서버로부터 n번 째 홉을 클라이언트로서 신뢰합니다.

함수

사용자 정의 신뢰 구현입니다. 이 방법을 올바르게 숙지하고 있는 경우에만 이 방법을 사용하십시오.

app.set('trust proxy', function (ip) {
  if (ip === '127.0.0.1' || ip === '123.123.123.123') return true; // trusted IPs
  else return false;
});

trust proxy 값을 false 이외의 값으로 설정하면 다음과 같은 세 가지의 중요한 변화가 발생합니다.

trust proxy 설정은 proxy-addr 패키지를 이용해 구현됩니다. 자세한 정보는 해당 문서를 참조하십시오.