AWS

AWS EC2 8080포트 80으로 연결하는 방법

늦게 시작한 개발자 2023. 1. 19. 16:00

서버를 관리하다보니 욕심은 생기기 마련이다. 그러다보니 스프링부트에서 돌아가는 8080포트에 대해서 80으로 설정하는 방법에 대해 알아보다가 이번에 3일정도 걸려서 정보를 찾은 후 해결을 하게 되었다.

우선 AWS EC2를 사용하는 사람이라면 VPC에서 먼저 포트를 열어두는게 좋다.

(기본적으로 80포트를 열어둔다고 생각하고 있었으나 EC2에서는 따로 설정을 잡아주는게 좋은 것 같다. 아마도 VPC의 경우는 보안상의 이유로 나뉘어져 있는 것이라 생각이 든다.)

 

먼저 나의 인스턴스와 연결되어있는 VPC에서 인바운드 규칙에서 인바운드 규칙 편집에서 80포트를 설정해줘야 한다.

규칙추가 후 사용자 지정 TCP > 포트범위에 80을 입력하여 추가를 해준다.

이제 포트가 열려있다면 EC2에서 리눅스로 연결을 한다. 나의 경우는 EC2에서 제공되는 <인스턴스에 연결> 을 통해 설정을 잡아 주었다.

먼저 nginx를 설치해 줘야 한다.

$ sudo apt install nginx

설치를 완료한 후에 Nginx를 설정해줘야 한다. 아래의 디렉터리로 이동해 준다.

$ cd /etc/nginx/sites-available

이곳에서 ls를 입력하게 된다면, 현재 디렉터리에 존재하는 것은 default가 존재하고 있다. 이곳에서 우리는 80포트에 연결 시켜줘야할 코드를 입력해줘야 한다.

$ sudo nano srpbt

나의 경우는 srpbt라는 것을 생성하여 코드를 작성할 예정이다.

위의 명령으러를 입력하면 새로운 창이 뜨게 되는데

server {
        listen 80;
        server_name srbt.kro.kr;

        location / {
                proxy_pass http://localhost:8080;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
        }
}

server_name 의 경우는 나는 현재 도메인 주소를 받은 상황이다. 로컬 주소로 입력해줘도 된다. 저 주소를 입력하면 8080이 없이 뜬다는 뜻이다.

location / 밑으로 적은 내용 중 proxy_pass 는 고정아이피로 하는 것인지 모르겠으나 저것으로 입력해도 도메인 입력으로도 제대로 작동이 된 것을 확인할 수 있다. 이부분은 조금더 알아보는게 좋고 나머지 내용을 입력한다면 정확한 이유는 자세히 알 수 없다. 그냥 그대로 적어주는게 좋을듯 하다.

^ 이것은 컨트롤을 말하는 것이므로 컨트롤 X를 누르면 수정된 내용에 대해 저장 여부를 물을 것이다. 이때 Y를 누르면 되고 위의 사진과 같은 아래의 줄이 나오는데 아마 추가로 한줄이 더 생겼을 것이다. 그것은 해당 파일명으로 입력을 할 것인지에 대해 물어보는 것 같으니 엔터를 친 후 나와졌을때 ls입력으로 아래와 같은 디렉터리가 생겼다는 것을 확인해볼 수 있다.

이제 생성된 디렉터리를 연결 시켜줘야할 차례다.

$ cd /etc/nginx/sites-enabled/

이곳으로 넘어와서 ls를 입력해보면 디폴트값이 보일텐데 현재 디폴트가 링크되어 있다는 것이다.

(참고로 enabled에서는 파일을 가져오는게 아닌 연결 즉 링크를 시켜주는 것이기 때문에 다른게 존재해서는 안되는 것으로 보인다.)

이제 디폴트 값을 삭제해주는 코드를 입력해준다.

$ sudo rm default

ls 입력으로 아무것도 존재하지 않은 것을 확인할 수 있는데 아까 available에서 생성한 srpbt를 링크해보도록하겠다.

$ sudo ln -s /etc/nginx/sites-available/srpbt

지금 보는 것처럼 하늘색의 색상이 되어있어야 하는데 잘못된 것을 가져오게 될 경우 빨간 글씨로 명시되어 있는 것을 확인할 수 있다.

이제 설정을 넣었으니 nginx를 재부팅 해줘야한다.

(참고로 enabled에서만 사용을 해야하는지는 아직 알 수 없으나 현재는 enabled 내에서 쓴 명령어라고 보면 된다.)

$ sudo systemctl restart nginx

아래는 nginx에서 사용되는 명령 몇개를 써보겠다.

$ sudo systemctl stop nginx // 종료
$ sudo systemctl start nginx // 시작

$ sudo nginx -t // 오류 발생시 해당 명령어를 통해 이유를 찾아볼 수 있다.

문제없이 되었다면, 처음화면으로 되돌아 가야한다.

$ cd ../../../..  // 뒤의 ../로 상위 상위 상위 폴더라 생각하면 된다.

기본의 모습은 ~$ 였으나 현재 /$ 으로 되어있는 것을 확인해볼 수 있다.
이때 아래와 같은 명령어를 입력하면 원래의 본모습으로 돌아가게 된다.
/$ cd ~ //enter
~$   // 원래의 모습

원래의 모습으로 되돌아 왔다면 나의 .jar 파일이 연결된 디렉터리에서 jar 파일을 실행하면 된다.

참고로 java -jar 까지만 입력후 Tab 키를 누르면 해당 파일명.jar가 그대로 복사되어 붙여넣기가 자동으로 되니 팁으로 사용하자