이번 게시글에선 간단한 static file server를 nginx를 이용하여 띄워 볼 계획이다.
이 과정을 통해 다음과 같은 정적 파일 서버를 간단하게 구성할 수 있다.
만약 라즈베리가 포트포워딩이 되어있지 않아 접근하기가 힘들다면 이 글을 먼저 읽어보고 설정한 후에 작업해보자.
1. Nginx 설치
nginx는 매우 가벼운 웹 서버이며, 리버스 프록시로도 이용할 수 있고, 여러 플러그인을 도입해 이용할 수 있다.
sudo apt-get install nginx 를 통해 nginx를 설치하고, /etc/nginx의 nginx.conf 파일을 조회해보자.
sudo apt-get install nginx
SSL, gzip 및 여러 설정들이 있지만, 우린 여기에 주목해보자.
nginx에서는 개별 호스트에 대한 설정을 conf.d 폴더와 sites-enabled 폴더에 구성한다.
이 설정 위의 SSL 및 로깅에 관한 설정들은 공통적인 부분이라, 개별 도메인과 서버에 관한 설정을 분리하여 모듈화 할 수 있다.
새로 관리해야 할 도메인이 추가되면, 기존 파일은 건들지 않고 새로운 파일을 생성해서 설정함으로써 관리하여 매우 편리하다.
2. Nginx 설정 및 실행
sites-available 폴더에 서버를 연결할 도메인 이름의 파일을 만들어보자.
해당 파일에서 다음과 같이 설정한다.
다음 설정에 대해서 설명을 하자면,
cloud.riverandeye.com 도메인으로 / 이하 경로로 요청이 들어온 경우, /www/files에 있는 파일을 전달하겠다는 뜻이다.
autoindex는 nginx 자체 설정으로, 해당 root 폴더의 파일을 리스팅 한다는 뜻이다.
server_name은 자신의 도메인에 맞게 변경해주어야 한다.
저렇게 설정하고, 자기 도메인에 해당 서버를 연결하면 간단하게 파일 리스팅 서버를 구성할 수 있다.
이는 nginx 자체적으로 제공하는 기능이기 때문에, 매우 쉽고 간편하다고 볼 수 있다.
sites-available 폴더에서 설정 파일을 생성했으면, sites-enabled 폴더로 Symbolic link를 만들어주자
sudo ln -s /etc/nginx/sites-available/cloud.riverandeye.com /etc/nginx/sites-enabled
Symbolic link를 만들어 동작시키는 이유는, 그럼 편하니까! 도메인에 대한 배포를 취소할 때 그냥 sites-enabled의 Symbolic link를 제거하면 끝이고, 기존 설정파일을 보존할 수 있기 때문이다.
nginx를 실행하는 건 systemctl 명령어를 이용하면 간편한다.
sudo systemctl restart nginx 를 이용하여 nginx 서버를 실행한다.
처음 설치시 default로 실행되어 있어서 restart라는 명령어를 사용한것, 안되어 있으면 restart -> start로 바꿔주자.
연결한 도메인으로 이동하면, 맨 위 이미지 같이 파일이 리스팅되어있는 것을 볼 수 있다.
3. Authentication 구성하기
현재 상황은 그냥 아무나 내 사이트에 접속해서 원하는 파일을 가져갈 수 있는 상황이다.
로그인 기능을 추가해서, 내가 원하는 대상들이 계정을 통해 파일에 접근할 수 있게끔 하면 참 좋을 것 같다.
Authentication 구성엔 다음 문서를 참고하였는데, nginx 공식 문서라 그런지 확실히 정리가 잘 되어있다.
우선 password file을 생성할 util을 설치해야 하는데, apt 혹은 apt-get 이용하여 설치한다.
Debian 혹은 Ubuntu의 경우엔 apache2-utils 를
그 외 CentOS 등의 리눅스 계열 운영체제엔 httpd-tools 를 설치한다.
sudo apt install apache2-utils
설치 후 htpasswd라는 커맨드를 사용할 수 있게 되는데, 이를 이용하여 아이디와 패스워드를 저장해준다.
아이디-패스워드가 작성된 파일을 본인은 /etc/nginx/conf.d 에 .htpasswd 라는 파일 명으로 생성하였다.
sudo touch /etc/nginx/conf.d/.htpasswd
파일을 생성한 후엔 htpasswd 모듈을 이용하여 해당 파일에 아이디와 패스워드를 암호화하여 작성한다.
sudo htpasswd /etc/nginx/conf.d/.htpasswd <아이디>
New password : <비밀번호>
Re-type new password: <동일한 비밀번호>
그 후, basic_auth 설정을 통해 해당 서버로 요청시 authentication을 거치게끔 설정한다.
해당 설정은 이전에 생성했던 /etc/nginx/sites-available 폴더의 도메인 파일에 설정을 추가해준다.
server {
listen 80;
server_name cloud.riverandeye.com;
auth_basic "authentication required";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
location / {
root /www/files;
autoindex on;
}
}
server_name은 꼭 변경하도록 하자.
sudo systemctl restart nginx 를 통해 서버를 껐다 켜고 지정한 사이트에 접속하면 다음과 같은 화면을 볼 수 있을 것이다.
이전에 설정한 ID와 PW로 접속하면 기존 리스팅 된 파일의 목록을 마저 조회할 수 있다.
이렇게 매우 간단하게 자기만의 정적 파일 서버를 구성해보았다 :)
'프로젝트 > 라즈베리' 카테고리의 다른 글
[5] Systemd 를 이용한 go 어플리케이션 프로세스 관리 (2) | 2020.10.12 |
---|---|
[4] Nginx에 HTTPS/SSL 적용하기 (0) | 2020.09.08 |
[2] 라즈베리 파이 포트포워딩하고 sshd 서버 띄우기 (0) | 2020.09.02 |
[1] 라즈베리 파이에 우분투 서버 이미지 설치하기 (2) | 2020.08.29 |
[0] 라즈베리로 이것저것 만들어보자! (0) | 2020.08.29 |
댓글