nginx docker

지노·2021년 4월 30일
3

nginx.conf 파일 작성

  • 경로 "/home/ubuntu/nginx.conf" -> 이 위치는 마음대로 바꿔도 가능
    대신 아래 도커 실행 명령어에서 수정이 필요
# home/ubuntu/nginx.conf

user nginx;
worker_processes 1;

pid         /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    access_log  /var/log/nginx/access.log;
    error_log   /var/log/nginx/error.log;

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    server {
        listen 80;
        server_name localhost;
        location / {
            proxy_pass         http://{본인_서버_ip}:{포트}; Ex) 192.168.0.21:8080
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

    sendfile        on;
    keepalive_timeout  65;
    include /etc/nginx/conf.d/*.conf;
}

도커 실행

sudo docker run -d -p 80:80 -v /var/log/nginx:/var/log/nginx -v /home/ubuntu/nginx.conf:/etc/nginx/nginx.conf nginx:latest

nginx 로그 AWS Cloudwatch logs와 연동

# /var/awslogs/etc/awslogs.conf

[/var/log/nginx/access.log]
datetime_format = %d/%b/%Y:%H:%M:%S %z
file = /var/log/nginx/access.log
buffer_duration = 5000
log_stream_name = access.log
initial_position = end_of_file
log_group_name = [로그그룹 이름]

[/var/log/nginx/error.log]
datetime_format = %Y/%m/%d %H:%M:%S
file = /var/log/nginx/error.log
buffer_duration = 5000
log_stream_name = error.log
initial_position = end_of_file
log_group_name = [로그그룹 이름]

로그 주소 확인

  • AWS Cloudwatch 로그 탭
  • 로그 그룹선택
  • 위 설정 파일에서 작성한 로그 그룹 이름 검색
  • 로그 전송이 잘 된다면 성공!

검색

nohup으로 로그 남기기

nohup java -jar ./build/libs/jwp-chess-0.0.1-SNAPSHOT.jar 1> /home/ubuntu/logs/spring/application.log 2>&1  &

nohup으로 로그를 남길때 단점

  • 모든 로그를 다 보내기 때문에 에러 로그를 분리하려면 cloudwatch에서 filter 해서 처리해야함
  • CU 강의 자료에 있는 대로 로그를 분리해서 남기고 해당 로그파일 경로를 아래 설정에 지정해주면 되지 않을까?

application log

# /var/awslogs/etc/awslogs.conf

[/var/log/syslog]
datetime_format = %b %d %H:%M:%S
file = /var/log/syslog
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = jinho-sys-log

[/var/log/nginx/access.log]
datetime_format = %d/%b/%Y:%H:%M:%S %z
file = /var/log/nginx/access.log
buffer_duration = 5000
log_stream_name = access.log
initial_position = end_of_file
log_group_name = jinho-nginx-access-log

[/var/log/nginx/error.log]
datetime_format = %d/%b/%Y:%H:%M:%S %z
file = /var/log/nginx/error.log
buffer_duration = 5000
log_stream_name = error.log
initial_position = end_of_file
log_group_name = jinho-nginx-error-log

[/var/log/application.log]
datetime_format = %b %d %H:%M:%S
file = /home/ubuntu/logs/spring/application.log
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = end_of_file
log_group_name = jinho-spring-application-log

spring application 로그 확인

profile
Spring Framework를 이용한 웹 개발과 AWS 서비스, Container를 사용한 CI/CD 인프라에 관심이 있습니다.

2개의 댓글

comment-user-thumbnail
2021년 4월 30일

인프라 왕자 알리 넘 멋져요

답글 달기
comment-user-thumbnail
2021년 5월 1일

머시써요...

답글 달기