Nginx

특정 IP/디렉토리 접근 제한 처리

uunnamed·2014년 4월 14일·조회 22,429

시스템을 운영하다 보면 정기 PM 또는 시스템 이슈 발생 시, 공지 페이지를 띄울 때가 생기곤 합니다. 

그래서 특정 IP (관리자 또는 접속이 반드시 필요한..유저의 IP)에 대해서만 시스템 디렉토리에 접근을 가능하게 하고 그 외에 IP에 대해서는 공지 페이지로 이동하게 하는 설정을 알아보았습니다. 

초기페이지는 index.jsp 로 jsp 확장자에 대해서 뒷단의 WAS에서 처리하게 하여 nignx.conf에 기본 설정을 하였습니다. 

location ~ \.jsp$ {
 proxy_pass http://IP:PORT;
} 

이후 허용이 필요한 IP(11.111.11.1)에 대해서만 접근 설정을 합니다. 

location ~ \.jsp$ {
 proxy_pass http://IP:PORT; 
 ## Admin IP ## 
 allow 11.111.11.1; 
 deny all;
 

이제 설정을 한 IP 이외에는 초기페이지 호출 시, 403 Forbidden이 발생하게 됩니다. 

그리고 403 Forbidden을 처리하기 위하여 공지 페이지(notice.html)를 NginX 소스 디렉토리에

올려두고 아래와 같이 설정합니다.

location ~ \.jsp$ {
 proxy_pass http://WAS_IP:PORT;
 ## Admin IP ##
 allow 11.111.11.1;
 deny all;
 error_page 403 http://WEB_IP:PORT/notice.html;
}

이제 설정한 특정 IP를 제외하고는 index.jsp 호출 시, notice.html이 호출 되어 해당 페이지로 이동하게 됩니다. ^_^

추가로 error_page 설정에 대해서 아래와 같이 상대디렉토리, 파일을 선언하면, 해당 파일이 호출되지 않고 계속 403 Forbidden이 발생하였습니다. 

location ~ \.jsp$ {
  proxy_pass http://WAS_IP:PORT;
  ## Admin IP ##
  allow    11.111.11.1;
  deny     all;
  error_page 403 /notice.html; 
}

이상입니다.

댓글 4

로그인 후 댓글을 남길 수 있습니다.

  • 몽상가몽상가· 2014년 4월 14일
    상대경로 지정 시, 혹시 docroot가 지정되지 않아서 그런건 아닐까요?
  • 맑· 2014년 4월 15일
    apache 와 비슷한 문법이라도 왜 nginx가 더 수월해 보이는걸까요..? ;;
  • 빅토르최빅토르최· 2014년 4월 21일
    정말 유용하게 사용할 수 있을 것 같네요. 맨 마지막 상대경로 문제는 몽상가님 말씀처럼 뭔가 해결책이 있을 것 같기도 한데..
  • sscenic· 2014년 4월 21일
    제생각에 상대경로를 지정시 정상 notice.html 이 호출이 안되는것은 앞의 proxy_pass 설정에서 이미 리퀘스트가 WAS쪽으로 넘어가서가 아닌가 싶습니다.