본문 바로가기
일상/일상

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

by 뽀도 2024. 9. 6.

[상황]

- .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

 

 

정상 설치 후에 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포트와 웹서버를 연결한다. 

 

반응형

댓글