티스토리 뷰
발생일: 2017.12.06
키워드: nginx, default_server, 기본 server
문제:
엥?? 도메인이 다른 전혀 관련 없는 웹페이지가 우리 서비스를 프록시로 걸어 제공하고 있었다.
어처구니가 없는 행동이지만, 그 전에 왜 nginx는 도메인이 다른 접근에 응답하고 있었던 걸까?
nginx 설정의 서버 블럭에는 아래와 같이 server_name 이 명시되어 있었다.
server {
server_name ohgyun.com;
...
}
해결책:
nginx의 "첫 번째" 서버 블럭은 server_name 이 매칭되지 않았을 때 동작하는 기본 서버 블럭이다.
서버 블럭을 하나만 정의했었기 때문에, 도메인이 매칭되지 않았을 때에도 동일하게 첫 번째 블럭이 실행된 것이 문제였다.
아래와 같이 기본 서버 블럭을 정의하고, 404를 리턴하게 한 것으로 해결했다.
# Default server
server {
return 404;
}
server {
server_name ohgyun.com;
...
}
논의:
응답으로 444를 리턴하면, 404보다는 네트워크 데이터를 좀 더 절약할 수 있다고 한다.
우린 AWS ELB를 쓰고 있었는데, 444로 리턴했더니 502 Bad Gateway로 응답한다.
확인해보니, 444는 nginx 확장 코드라 아직 ELB에서 지원하지 않는다고 한다.
404로 리턴하도록 했다.
참고:
반응형
댓글
공지사항