지니워의 일상다반사

nginx에서 authentication 설정하기 본문

본격 SE업무이야기/nginx

nginx에서 authentication 설정하기

지니워 2013. 12. 18. 13:30

authentication : 입증


웹서버를 다뤄본 사람이라면 친근한 단어일 것이다. 풀신텍스는 아니더라도 'auth'라는 단어는 꽤 익숙한 단어일 것이다.


authentication(이하 줄여서 auth)는 웹 상에서 특정경로나 파일에 접속하려고 할 때 거쳐야 하는 인증과정이라고 볼 수 있다. auth는 다음과 같은 경우에 자주 쓰인다.


web root는 /home/public_html이고 /home/public_html/admin 에는 관리자 권한이 있는 유저들만이 접근이 가능해야 한다.


이럴 경우 인증과정을 거쳐서 관리자 권한이 있는 유저들이 접근 가능하게 해주는 것이 바로 auth이다.


nginx의 auth설정 방법은 아파치와 비슷하지만 .htaccess 파일을 생성하는 과정이 없기 때문에 오히려 더 간단한 면이 있는 것이 사실이다. 하지만 conf파일 컨트롤이 아파치보다 더 세밀하게 요구되기 때문에 조금 더 어렵기도 하다. 나같은 경우 conf설정을 하는데 꼬박 이틀이 걸렸다. 아직 nginx에 잘 적응하지 못해서 그런게 더 크지만...음음 암튼 그렇다. 각설하고 nginx에 auth를 설정하는 방법을 적어보겠다.


### nginx에 auth 설정하는 법 ###


1. 기본적으로 auth를 설정하는데 필요한 유틸인 htpasswd는 깔려있다. 만약 설치되어 있지 않다면


yum install apache2-util


로 필요 유틸을 설치하기 바란다.(정확한 건지 모르겠다; 다른 문서에서 본거라 기억이 가물가물하다.)


2. htpasswd -c /home/test/.htpasswd testuser


위 명령어를 보면 -c 옵션을 볼 수 있는데 이는 처음으로 auth용 계정을 생성할 때만 사용되는 옵션으로 차후 auth 계정을 더 추가할 일이 있다면 절대 포함해서는 안되는 옵션이다. 만약 -c옵션을 포함하면 파일이 덮어쓰기가 되어버려 기존에 생성되어 있던 유저들은 모두 사라져 버린다.


그 다음 /home/test/.htpasswd는 파일을 생성할 경로와 파일명이다. 파일명은 굳이 .htpasswd를 쓸 필요가 없다. 오히려 보안상 다른 파일명을 쓰길 권장한다. 그리고 웹에서 접근 불가능한 곳에 파일을 생성하는 것이 좋다.

마지막으로 testuser는 생성할 계정명이다.


명령어를 실행하면 암호를 설정하라는 글이 뜬다. 암호를 설정하면 1차적인 설정은 끝이 난 것이다.


3. 이제 인증을 도입할 virtualhost에 대한 설정이 필요하다. nginx의 각 virtualhost에 대한 설정은 /etc/nginx/sites-enabled/에 설정해 뒀을 것이다. 그중 인증을 도입할 설정파일에 들어간 후 적용해야할 location 부분에


auth_basic "인증창 이름";

auth_basic_user_file htpasswd파일 경로(/home/test/.htpasswd);


위 설정을 넣은 다음 nginx를 reload 혹은 restart 해주면 된다.


이상 끝!


궁금한 점은 댓글 남겨주세요.

'본격 SE업무이야기 > nginx' 카테고리의 다른 글

nginx.conf core module 옵션  (0) 2013.08.07
/etc/init.d/nginx 스크립트 만들때 유의할 점  (0) 2013.07.29
nginx를 설치하다.  (0) 2013.07.26
Comments