우분투 Nginx 디렉토리 폴더에 암호 거는 방법
컨텐츠 정보
- 22,664 조회
- 0 추천
- 목록
본문
1. 들어가며
최근에 Zend OPcache와 Memcached를 깔고 GUI로 잘 보고 있는데요. (관련 링크:결국 Zend OPcache와 memcached로 정착했네요.)
이게 아무래도 보안이 걸려있는게 좋을 것 같아서 찾아보게 되었습니다.
전체적인 내용은 관련링크1을 번역한 수준이므로, 정확하게 보시려면 관련링크를 참조하세요.
2. 암호가 저장 될 폴더 생성하기
우선 암호파일이 저장될 공간을 지정하는 것이 좋습니다.
웹에서는 원천적으로 접근이 불가능한 곳이 좋죠.
nginx를 쓰니깐 /etc/nginx/passwd 이 경로로 넣겠습니다.
mkdir /etc/nginx/passwd
위 명령어로 폴더를 만듭니다.
물론 본인이 원하는 폴더에 넣어도 상관없습니다. 위 경로는 단지 예시입니다.
3. 암호파일 생성하기
암호파일을 만드는 방법은 크게 두가지가 있습니다.
(1) 아파치의 htpasswd 명령어를 이용하면 됩니다.
그런데 아파치를 깐적이 없다면
htpasswd
위 명령어를 내릴 때
-bash: htpasswd: command not found
위와 같이 그런 명령어가 없다고 합니다.
apt-get install apache2-utils
그러면 위 명령어로 아파치 관련 유틸을 깔아줘야겠죠.
이제 htpasswd 명령어를 쓸 수 있습니다.
htpasswd -c /etc/nginx/passwd/.htpasswd woosung
위 명령어는 woosung이라는 user의 암호를 .htpasswd라는 암호파일에 생성(-c옵션)한다는 말입니다.
암호를 2번 물어봅니다. 같은 암호 두번 넣으면 되구요.
참고로 -c는 처음에만 쓰면 되고,
다른 유저의 암호를 추가하고 싶다면 -c 옵션을 빼면 됩니다.
만약에 기존 유저가 있을 때 -c 옵션을 쓴다면 기존유저의 암호정보는 날아갑니다.
(2) 아파치 명령어를 쓰기 싫거나, 패키지를 깔 상황이 아니라면, 파이썬 스크립트를 사용해도 됩니다.
cd /usr/local/bin
wget http://trac.edgewall.org/export/10791/trunk/contrib/htpasswd.py
chmod 755 /usr/local/bin/htpasswd.py
위 명령어를 한줄씩 실행하면 됩니다.
htpasswd.py -c -b /etc/nginx/passwd/.htpasswd woosung woopasswd
위와 같이 -c와 -b 옵션을 같이 쓰는데요.
-c는 생성입니다. 앞선 아파치명령어와 같습니다.
암호 파일이 없을 때 생성하며, 있어도 덮어쓰므로 기존 유저의 암호 정보는 날아갑니다.
그리고 -b 옵션은 woosung이라는 유저이름으로 woopasswd라는 암호를 저장한다는 옵션입니다.
아파치 명령어와는 달리 암호를 물어보지 않습니다.
그리고 해당 암호파일에 유저를 추가하려면 -c옵션만 빼면 됩니다.
4. 암호파일 권한 설정하기
참고로 .htpasswd 처럼 파일 앞에 .이 있으면 숨김파일이 됩니다.
chmod 640 /etc/nginx/passwd/.htpasswd
위와 같이 640으로 주면 나름 안전하게 보관 가능합니다.
5. Nginx에서 설정하기
이제 특정 폴더에 암호를 걸어보겠습니다.
홈페이지의 root는 /var/www 로 설정하고, 암호를 걸고 싶은 폴더는 /var/www/test 라고 지정하구요.
nano /etc/nginx/sites-available/default
위와 같이 nginx설정에 들어가서
server {
listen 80;
server_name www.example.com example.com;
root /var/www;
[...]
location /test {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/passwd/.htpasswd;
}
[...]
}
위와 같이 location /test 부분만 넣어주면 끝입니다. 완전 쉽죠?
만약에 root폴더부터 암호를 걸어주려면
server {
listen 80;
server_name www.example.com example.com;
root /var/www;
[...]
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/passwd/.htpasswd;
}
[...]
}
위와 같이 넣으면 됩니다.
이상 Nginx 디렉토리 폴더에 암호거는 방법에 대해서 알아보았습니다.
-
등록일 2020.09.18
-
등록일 2020.09.08도커 허브에서 매일 이미지 빌드하기댓글 2
-
등록일 2020.09.08
-
등록일 2020.07.19
관련자료
-
서명우성짱의 NAS를 운영하고 있습니다.
저의 즐거움이 여러분의 즐거움이면 좋겠습니다.
-
링크