[AWS EC2에서 FastAPI 서버] 3. http 요청 처리하기

이희재·2024년 8월 15일

AWS

목록 보기
3/3
post-thumbnail

이전에는 로컬에서 접속할 수 있는 서버를 만들었다.
이 서버를 다른 컴퓨터에서 접속하면 어떻게 될까?

화면의 아래쪽을 보면 PublicIPs라고 써진 부분에 IP주소를 확인할 수 있다.
이 주소를 쳐서 접속해보기로 했다.

접속이 되지 않는다.

그 이유는 http://54.180.150.169에 접속하면 포트80번으로 자동으로 연결되는데,
우리가 열어둔 포트는 8000번이기 때문이다.

이 문제를 해결하는 것이 Nginx이다.

Nginx란?

nginx는 서버와 클라이언트 사이에 존재하는 프록시 서버로, 클라이언트의 요청을 서버로 대신 전달해주는 역할을 한다.

출처: https://velog.io/@chickenfondue/nginx-docker-compose%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%A6%AC%EB%B2%84%EC%8A%A4-%ED%94%84%EB%A1%9D%EC%8B%9C-%EA%B5%AC%EC%84%B1

위의 그림처럼 80번 포트로 들어온 요청을 실제로 열려있는 포트로 전달해주는 것이 nginx이다.

장점

  1. 로드 밸런싱: 트래픽을 분산시킬 수 있다.
  2. 보안 강화: 웹 서버가 클라이언트에게 바로 노출되어있지 않아 위험한 요청을 차단할 수 있다.(DDOS등)

Nginx 설치 및 설정

sudo apt install nginx

위의 명령어를 통해 간단히 설치할 수 있다.

설치가 되었다면 이제 8000번 포트로 링크할 수 있도록 설정해주어야 한다.

sudo vi /etc/nginx/sites-enabled/default

명령어를 입력하면 vi 편집기가 열린다.


당황하지 말고 아래로 스크롤 해서 내려가면 location이라는 부분이 보인다.

location / 뒤에 붙은 중괄호 안의 내용을 변경해주면 된다.

변경할 때는 i를 눌러 INSERT모드로 바꾸고

proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $http_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-Photo $scheme;

이 내용을 중괄호 안에 넣어주면 된다.

저장하고 나가기 위해서 esc를 누르고 :wq!를 치고 엔터를 치면 된다.

변경사항을 반영하기 위해 nginx를 재실행 해준다.

실행하기
sudo service nginx start
재실행하기
sudo service nginx restart
종료하기
sudo service nginx stop

그리고 -t옵션으로 설정 파일의 문법이 정확한지 검사할 수 있다.

sudo nginx -t

문제가 없다고 떴으니 이제 다시 서버를 열고 테스트할 수 있다.

테스트

uvicorn main:app 명령어로 서버를 열어주고

아까와 같은 IP주소를 통해 접속할 수 있다.

문제없이 잘 뜨는 것을 확인할 수 있다.

끝.

profile
그냥 하는 사람 @Heejae-L

0개의 댓글