nginx 리버스 프록시
4. 응용 변형 예제
4.1 경로별로 다른 upstream 으로 분기
location /api/, location /admin/ 을 각각 다른 upstream 으로 보내면 API 서버와 관리자 화면을 다른 백엔드로 분리할 수 있습니다. 배포 주기가 다른 서비스를 나눌 때 씁니다.
4.2 내부 전용 location 접근 제한
location /actuator/ { allow 10.0.0.0/8; deny all; } 처럼 사내망만 허용하는 블록을 만들면 헬스체크·관리 엔드포인트를 외부에서 못 보게 막습니다. 애플리케이션 코드를 안 건드리고 nginx 단에서 막는 방법입니다.
4.3 응답 헤더 추가·제거
add_header X-Frame-Options SAMEORIGIN; 로 보안 헤더를 붙이고, proxy_hide_header Server; 로 백엔드가 흘리는 서버 정보를 감춥니다. 여러 location 에 반복하려면 map 또는 별도 include 파일로 뺍니다.
4.4 캐시 헤더만 다르게 주는 정적 경로
같은 /static/ 아래도 해시가 붙은 빌드 산출물(app.a1b2c3.js)은 expires max;, 원본 이름 그대로인 파일은 expires 1h; 처럼 나눠 캐시 무효화 문제를 줄입니다. location 을 정규식으로 더 세분화합니다.
4.5 유지보수 페이지로 잠깐 전환
배포 직전 location / { return 503; error_page 503 /maintenance.html; } 로 잠깐 바꿔 두면 사용자에게 빈 오류 대신 안내 페이지가 보입니다. 이 전환과 되돌리기 절차는 리눅스 운영 05 의 설정 교체 방식을 그대로 씁니다.