LabHub

Tomcat & nginx 운영 · nginx 리버스프록시 설정 · 퀴즈

퀴즈: nginx 리버스프록시

LabHub 에서 이어서 보기

문항 7개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. `proxy_set_header Host $host;` 가 없을 때 실제로 발생하는 문제는?

    1. 백엔드가 받는 Host 가 내부 주소가 되어, 리다이렉트·콜백 URL 이 내부 주소로 나간다
    2. 프록시가 백엔드의 가상 호스트를 못 찾아 연결 자체가 실패한다
    3. 응답 헤더의 Vary 가 어긋나 gzip 압축이 적용되지 않는다
    4. 요청을 구분할 키가 없어 액세스 로그에 호스트가 비어 남는다
  2. TLS 를 프록시에서 종료하고 백엔드에는 HTTP 로 넘길 때 리다이렉트 무한 루프가 생기는 원인은?

    1. 백엔드가 평문으로 받았다고 보고 https 로 되돌리는데, 그 판단을 바꿀 헤더가 없어서
    2. 중간 인증서가 빠진 체인이라 클라이언트가 재협상을 반복하기 때문에
    3. 응답을 기다리는 시간이 짧아 프록시가 요청을 다시 보내기 때문에
    4. 압축 협상 헤더가 어긋나 클라이언트가 요청을 다시 만들기 때문에
  3. `location /api/ { proxy_pass http://backend/; }` 설정에서 `/api/users/1` 요청이 백엔드에 전달되는 경로는?

    1. /api/users/1 — 경로가 그대로 전달된다
    2. /api/api/users/1 — location 경로가 한 번 더 붙는다
    3. /users/1 — 매칭된 /api/ 가 잘려 나간다
    4. / — proxy_pass 에 적은 경로만 전달된다
  4. 파일 업로드 시 413 오류가 나는데 애플리케이션 로그에는 아무 기록이 없습니다. 가장 유력한 원인은?

    1. 애플리케이션 로그 레벨이 낮아 업로드 실패가 기록되지 않았다
    2. nginx 의 client_max_body_size(기본 1MB)를 넘겨 nginx 가 직접 응답했다
    3. 임시 파일을 쓸 디스크가 부족해 저장 단계에서 조용히 실패했다
    4. 톰캣 스레드가 모자라 요청이 큐에서 대기하다 끊겼다
  5. 액세스 로그에서 `$request_time` 은 큰데 `$upstream_response_time` 은 작습니다. 무엇을 의미할까요?

    1. 백엔드 애플리케이션의 처리 자체가 느려 응답이 늦게 시작됐다
    2. 백엔드가 부른 DB 쿼리가 느려 응답 생성에 시간이 걸렸다
    3. 백엔드는 빨리 답했고, 지연은 클라이언트 네트워크나 전송 구간에 있다
    4. 프록시 설정이 잘못돼 두 값이 서로 다른 요청을 가리키고 있다
  6. `gzip_vary on;` 을 설정하는 이유는?

    1. 압축률을 높이기 위해
    2. 중간 캐시가 압축된 응답을 압축을 지원하지 않는 클라이언트에게 전달하는 것을 막기 위해
    3. CPU 사용량을 줄이기 위해
    4. gzip_types 를 자동 설정하기 위해
  7. 톰캣 매니저 화면 차단을 애플리케이션이 아니라 nginx 에서 하는 실무적 이점은?

    1. 애플리케이션 재배포 없이 reload 만으로 정책을 바꿀 수 있기 때문
    2. nginx 가 더 빠르게 처리하기 때문
    3. 톰캣이 접근 제어를 지원하지 않기 때문
    4. 로그가 남지 않기 때문