aws에서 nginx 사용해보기
웹서버
웹서버는 대표적으로 아파치, nginx가 있다.
웹서버는 정적(이미지, html 등) 파일을 제공하는 서버이다.
WAS
JBOSS, 아파치, Nodejs 등이 있으며 웹서버와 다르게 동적인 콘텐츠를 처리하고 제공하는 서버이다.
nginx를 사용하는 이유
로드밸런싱을 손쉽게 할 수 있음
aws ec2
리눅스 서버이며 우분투를 선택했다.
웹서버 IP가 변경되지 않도록 탄력적 IP를 적용했다.
인바운드 규칙은 편집하지 않았다. 기본 80포트와 22포트 허용
ec2 인스턴스 생성방법 검색하면 많기 때문에 생략하겠음
접속 방법
- ssh
유저명은 처음 ubuntu로 시작
ip는 public 주소거나 public dns주소 사용
$ ssh -i key.pem 유저명@ip주소
# 예시
$ ssh -i key.pem ubuntu@43.152.12.123
- putty 사용
웹사이트에서 aws putty 사용법을 검색하여 활용한다. (생략)
나는 putty를 사용했다.
다음과 같이 ubuntu로 로그인하면 아래와 같이 접속된다.
root 권한이 없다면 명령어 앞에 sudo
를 붙여야하는 귀찮음이 있다. 아래 명령어를 통해 root로 접속하자
$ sudo su
아래와 같이 $가 #으로 변한 것을 볼 수 있다.
nginx 설치
# 우분투 저장소에서 최신버전의 정보를 업데이트 한다.
$ apt-get update
# nginx를 설치한다.
$ apt-get install nginx
# jdk를 설치한다.
$ apt-get install openjdk-17-jdk
jar 파일 실행하기
&
: 백그라운드 실행
nohup
: 세션이 끊겨도 실행 (즉, putty를 닫아도 실행)$ nohup java -Dserver.port=8081 ./A.jar $ nohup java -Dserver.port=8082 ./B.jar $ nohup java -Dserver.port=8083 ./C.jar
jar 실행 확인하기
$ ps -ef | grep java
nginx config 파일 수정하기
- Host: 헤더가 없다면 server_name
- X-Real-IP: 클라이언트 IP 주소
- X-Forworded-For(XFF): 클라이언트 IP 주소를 식별하기 위한 설정 이 설정이 없으면 모든 http 요청은 reserved proxy가 한 것으로 기록
- X-Forworded-Host: 클라이언트 호스트 이름을 식별하기 위한 설정
- X-Forworded-Proto: 클라이언트와 reserved proxy 접속 시 사용한 프로토콜 설정 (https)
아래와 같은 경로에 nginx.conf파일을 열어보면 아래와 이미지와 같은 파일이 열린다.
중요한 것은 http부분이다. http부분중 읽어보면 include /etc/nginx/conf.d/*.conf;
라고 되어있다. 경로 밑에 있는 conf파일확장자를 모두 포함시킨다는 의미이다.
$ cd /etc/nginx
$ vi nginx.conf
conf.d 경로를 찾아가 파일을 생성해도 되고, 파일이 있다면 수정해도 된다. 아래 이미지와 같이 수정 및 만들었다.
$ cd conf.d
$ vi default.conf
nginx default링크 제거 및 재시작
# 꼭 제거해야함
$ rm -rf /etc/nginx/sites-enabled/default
# 테스트
$ nginx -t
# nginx reload
$ nginx -s reload
테스트하기
public DNS 및 public IP를 웹브라우저에 입력 후 새로고침을 하면 로드 밸런싱이 된다!
댓글남기기