개발 공부

손승열(Son Seungyeol)

NGINX는 _가 포함된 헤더를 무시한다.

NGINX를 사용할 때에는 헤더에 밑줄(underscore)이 포함되는 상황에 유의해야 합니다.

손승열(Son Seungyeol)
NGINX는 _가 포함된 헤더를 무시한다.

NGINX에서 _를 쓰면 헤더가 무시당할 수 있습니다.

일단 결론부터 써보았습니다.

전에 프로젝트를 수행하다가 특정 헤더가 무시되는 현상이 발생하여 정상적인 통신이 어려운 상황이 발생했었습니다.

처음에는 도대체 어디서 헤더가 무시되는지 알 수가 없어서 골머리를 앓았었는데, 계속해서 해매던 중 혹시나 하는 마음에 헤더에 썼던 언더스코어가 문제인가 싶어서 구글링을 해보니 그것이 문제일 수 있다고 하더라구요!

왜 _를 쓰면 안되는 걸까?

NGINX의 문서에 따르면 NGINX는 언더스코어(_)가 포함된 HTTP 헤더들을 드랍시킬 수 있다고 합니다. 이건 CGI 변수와의 매핑 과정에서 대시(-)와 언더스코어가 모두 언더스코어로 매핑되기 때문에 모호성 방지를 위해서라고 합니다.
🔖 CGI: 공용 게이트웨이 인터페이스(Common Gateway Interface)의 영문 약자로, 웹 서버 상에서 사용자 프로그램을 동작시키기 위한 조합

💡 해결책

두 가지 해결책이 있습니다.

그냥 언더스코어를 포함시키지 않는다!

당연히 이런 문제가 언더스코어로 인해 발생한다면 다른 명명 규칙 등을 적용해서 언더스코어가 포함되지 않은 헤더들을 구성하면 될 것입니다.

아니다 난 그래도 언더스코어를 포함해야겠다!

부득이하게 언더스코어를 포함시켜야 하는 상황이 있을 수도 있습니다.

이런 경우는 NGINX 문서에 해결법이 소개되어 있습니다.

NGINX 설정 파일에서

nginx
underscores_in_headers on;

위의 설정을 on으로 해준다면 NGINX가 언더스코어가 포함된 헤더를 무시하지 않는다고 합니다!


📚 참고 문헌

당신의 HTTP Headers에 underscores를 쓰지 마세요!!

CGI 스크립트의 환경 변수

공용 게이트웨이 인터페이스


Made with React, Gatsby and DatoCMS by @smastrom

Contribute or star on GitHub

© 2022-2023 손승열 for 🅒🅞🅝🅣🅔🅝🅣🅢

모두 좋은 하루 보내세요! 😊