본문 바로가기
Cloud Services/AWS

Chapter 4. Nginx

by 더 이프 2023. 6. 29.
728x90

목차

    1. Nginx

    ■ Nginx란?

    • 트래픽이 많은 웹사이트의 서버(WAS)를 도와주는 비동기 이벤트 기반 구조의 경량화 웹 서버 프로그램
    • 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용
    • Reverse Proxy Server로 활용하여 WAS의 부하를 줄일 수 있는 로드밸런서 역할

    ■ Nginx로 배포

    1. nginx 이름으로 보안 그룹, 인스턴스, 탄력적 IP를 생성
      - 해당 링크에서 나온 방식으로 각각 생성
      - nginx는 보안그룹에서 HTTP 유형을 사용
    2. 생성된 탄력적 IP를 nginx 인스턴스에 연결
    3. nginx 연결
    4. sudo apt update로 업데이트
    5. sudo apt install nginx로 엔진엑스 설치
    6. sudo cat /etc/nginx/nginx.conf로 엔진엑스가 잘 설치되어 있는지 확인(cat 명령어는 파일을 열때 사용)
      - 해당 파일이 include 되어있으면 nginx 정상 설치
    7. cd /etc/nginx/sites-enabled로 해당 경로로 이동 후 ls 명령어로 default 폴더가 있는지 확인
    8. sudo vim default로 해당 파일 수정
    9. Default server configuration 밑에 해당 코드 작성
      - 입력이 가능한 상태로 가려면 O 나 A키를 입력하면 INSERT 모드로 변환
      - 입력 완료 후에는 ESC 키를 누르면 밖으로 빠져 나갈 수 있음
      - 사용하는 서버의 수에 따라 server의 개수를 늘리면 됨
      - 아래의 코드에서 cpu-bound-app을 springboot로 변경
      - instance_n번의_ip는 연결할 {back_server의 프라이빗 IPv4 주소:8080}을 입력(중괄호는 없이
    upstream cpu-bound-app {
        server {instance_1번의_ip}:8080 weight=100 max_fails=3 fail_timeout=3s;
        server {instance_2번의_ip}:8080 weight=100 max_fails=3 fail_timeout=3s;
        server {instance_3번의_ip}:8080 weight=100 max_fails=3 fail_timeout=3s;
    }

    1. location / 내에 해당 코드 입력
      - 아래의 코드에서 cpu-bound-app을 springboot로 변경
    location / {
        proxy_pass http://cpu-bound-app;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    1. INSERT 상태에서 나온 후에 :wq를 입력하면 저장하고 밖으로 이동
      - 저장안하고 그냥 나가려면 q!를 입력시 강제로 나감
    2. sudo systemctl status nginx로 엔진엑스의 상태를 확인할 수 있고 컨트롤 가능
    3. sudo systemctl reload nginx로 nginx를 reload

    ■ 서버 실행

    1. back_server를 연결해서 docker -run -p 8080:8080 myorg/myapp으로 실행
    2. 엔진엑스의 인스턴스와 연결한 탄력적 IP 주소를 주소창에 입력 "인증실패"가 나오면 서버 정상 동작
      - 엔진엑스만으로 서버 구동