[개발일기] 우당탕탕 운영툴 배포기 ( 리눅스 + Nginx + kestrel )

[상황]

- .NET 8.0 사용,  "blazor web app"을 사용하여 개발, 통칭 "게임 운영툴"

- 개발용 AWS EC2 리눅스에 배포 완료

- http://{ip주소}:{포트} 번호로 배포하여 접속됨을 확인 

- 이때 도메인 주소 붙여서 도메인으로 접속을 하려는 상황이었는데,  route53에 A타입으로 호스팅을 하려고 할때 IP주소만 넣어야 하기 때문에 약간 곤란한 상황이었다. 

  *A 레코드에 포트 번호를 추가할 수 없음, A 레코드는 오직 IP 주소와 도메인 이름을 연결하는 데 사용

 

이때 이 문제를 해결하는 방법은 두가지가 있었는데 

 

하나, loadbalancer + route53 사용해서 처리하기 

 

둘, nginx 사용해서 처리하기 

 

개발용 운영툴에서 사용할꺼라 loadbalancer 붙이기가 애매해서 nginx 사용해서 처리하기를 택했다. 

 


1. 설치 확인 

nginx -v

 

설치가 되어 있으면 버전이 뜨고, 안되어 있으면 not found 로그가 뜬다. 

 

2. 설치 

sudo yum install nginx

 

3. ngnix 상태 확인 

systemctl status nginx

 

etc-image-0

 

정상 설치 후에 nginx  상태 확인을 해보면 저렇게 초록불 이 들어온다.

 

이제 게임 운영툴 포트와 nginx를 연결해주면 된다. 

 

4. nginx.conf 안에 내용을 수정해준다. 

 

server {
    listen 80;  # HTTP 기본 포트
    listen [::]:80;
    server_name _; # 도메인 이름

    location / {
        proxy_pass http://localhost:3001;  # Kestrel이 사용하는 포트 ( 여기 수정 )
        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 Upgrade $http_upgrade; # 웹소켓이나 다른 프로토콜로 업그레이드용으로 필요 
        proxy_set_header Connection "Upgrade";  # 웹소켓과 같은 지속적인 연결을 지원

    }
}

 

 

 

그럼 80 포트로 들어온 요청을 3001번 포트의 프로그램으로 연결해준다. 

 

5. Nginx 재시작

sudo systemctl restart nginx

 

재시작후 도메인을 입력하여 들어가보니 정상 동작 하였다. 

 

 

🍀 결론 🍀

 

ec2 장비에 특정 포트를 사용하여 배포한 '웹 서버'에 '도메인'을 연결하려면 

ec2 장비에 Nginx를 설치하여 80포트와 웹서버를 연결한다.