nginx: 허용하지 않은 도메인에서 접속이 되는 경우

발생일: 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로 리턴하도록 했다.
 
 
참고:

카테고리

분류 전체보기 (707)
About me. (6)
Daylogs (672)
비공개 (0)
영어공부 (0)
My works - 추억 (29)