웹서버

웹서버는 대표적으로 아파치, nginx가 있다.

웹서버는 정적(이미지, html 등) 파일을 제공하는 서버이다.

WAS

JBOSS, 아파치, Nodejs 등이 있으며 웹서버와 다르게 동적인 콘텐츠를 처리하고 제공하는 서버이다.

nginx를 사용하는 이유

로드밸런싱을 손쉽게 할 수 있음

aws ec2

리눅스 서버이며 우분투를 선택했다.

웹서버 IP가 변경되지 않도록 탄력적 IP를 적용했다.

인바운드 규칙은 편집하지 않았다. 기본 80포트와 22포트 허용

ec2 인스턴스 생성방법 검색하면 많기 때문에 생략하겠음

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로 로그인하면 아래와 같이 접속된다.

ubuntu

root 권한이 없다면 명령어 앞에 sudo를 붙여야하는 귀찮음이 있다. 아래 명령어를 통해 root로 접속하자

$ sudo su

아래와 같이 $가 #으로 변한 것을 볼 수 있다.

ubuntu

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

jar

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

nginx

conf.d 경로를 찾아가 파일을 생성해도 되고, 파일이 있다면 수정해도 된다. 아래 이미지와 같이 수정 및 만들었다.

$ cd conf.d
$ vi default.conf

nginx

nginx default링크 제거 및 재시작

# 꼭 제거해야함
$ rm -rf /etc/nginx/sites-enabled/default
# 테스트
$ nginx -t
# nginx reload
$ nginx -s reload

테스트하기

public DNS 및 public IP를 웹브라우저에 입력 후 새로고침을 하면 로드 밸런싱이 된다!

로드밸런싱

댓글남기기