본문 바로가기

Docker

[Docker] Docker Nginx, Reverse Proxy로 서버 구동 및 보안 설정(with kibana) - 2

이전 글 - [Docker] Docker Nginx, Reverse Proxy로 서버 구동 및 보안 설정(with kibana) - 1

 

 

Nginx 구동 확인

http://localhost  로 접속하면 다음과 같이 index 파일이 출력된다.

index 파일이 출력되는 이유는 기본으로 생성되어있는 conf.d/default.conf 파일에 80포트를 리슨하고 있는 가상 서버가

root와 index direction 을 통해 index파일을 전달하도록 설정되어있기 때문이다.

 

 

Nginx Kibana 서버 설정

# conf.d/kibana.conf
server {
    listen       5600;
    listen  [::]:5600;
    server_name  kibana;

    location / {
        proxy_pass http://kibana:5601;
    }

    location ~ (/app|/api|/internal|/translations|/bundles|/ui|/built_assets/|/elasticsearch|/spaces/enter) {
        proxy_pass          http://kibana:5601;
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_set_header    X-Forwarded-Host $http_host;
        proxy_set_header    Authorization "";
        proxy_hide_header   Authorization;
    }
}

 

conf.d 디렉토리 내에 kibana.conf 파일을 생성해주었다. (nginx.conf 에 바로 입력해도 무관)

5600 포트로 접속 시 kibana 대시보드로 연결해주는 설정이다.

5601 포트로 설정하게되면 기본적으로 kibana가 5601 포트를 사용하기때문에 충돌이 나게된다.

 

location ~ (/app|/api|/internal|/translations|/bundles|/ui|/built_assets/|/elasticsearch|/spaces/enter) {
...
}

위 부분은 kibana에 접속하게되면 리다이렉션이 일어나게 되는데 그때 리다이렉션되는 주소들을 허용해주는 역할을 한다. (조사필요)

 

docker exec -it nginx nginx -s reload

해당 명령어를 통해 구성 파일을 다시 로드하고 localhost:5600 으로 접속하게 되면

 



kibana home으로 접속이 된다.

 

 

Nginx kibana 보안 적용 - Apache 유틸 설치

apt-get install apache2-utils

apache 유틸이 설치되어있지 않다면 해당 명령어를 통해 설치한다. (ubuntu 기준)

 

Nginx kibana 보안 적용 - htpasswd 파일 생성

sudo htpasswd -cm /etc/nginx/.htpasswd [계정 이름]
New password:
Re-type new password:
Adding password for user test

해당 명령어를 통해 계정과 계정의 비밀번호를 설정

docker를 통해 실행하기 때문에 .htpasswd 파일을 nginx와 공유된 볼륨으로 이동시켜준다.

-> nginx container 기준 /etc/nginx/.htpasswd 위치해야함

 

.htpasswd

파일의 내용은 계정 아이디와 암호화된 비밀번호가 입력되어있다.

 

Nginx kibana 보안 적용 - 구성 파일 수정

작성한 kibana.conf 파일의 보안 정보를 추가한다.

server {
    생략...

    auth_basic          "입력창에 표시할 문구";
    auth_basic_user_file        /etc/nginx/.htpasswd;

	...생략
}
  • auth_basic - 인증용 계정 입력 창에 표시할 문구, 웹 브라우저마다 표시되지 않는경우도 있는것 같다.
  • auth_basic_user-file - 보안 적용할 htpasswd 파일
sudo docker exec -it nginx ngxin -s reload

작성이 되었으면 nginx 를 reload 해주고 다시 localhost:5600에 접속해주면

 

다음과 같이 계정을 인증해야하는 화면이 출력되고 계정을 입력하면 Kibana가 정상적으로 동작하는것을 확인할 수 있다.