BackEnd Server 배포

진성대·2023년 3월 20일
0

사이드 프로젝트

목록 보기
1/2
  • Route 53으로 도메인 구매 → AAAA 레코드와 A레코드 설정 (EC2 연결)
  • nginx 설치 후 nginx 에서 ssl 인증 받기
  • 443 포트 열렸으면 안에서 443 포트를 포트 포워딩을 통해서 tomcat = 8080 port로 연결 (proxy pass)

AWS에서 Nginx의 활용

  • nginx는 다양한 기능이 있을 테지만, 현재의 조건에서는 입력된 포트를 다른 포트로 리다이렉트 하는 역할로 사용한다. listen -> location
/etc/nginx/nginx.conf

    server {
        listen       80;
        listen       [::]:80;
        server_name  doreview.ga

        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;
        }
  • nginx 의 conf 파일이다. conf 파일을 보면 listen이 있다. doreview.ga:80(doreview.ga)로 접근할 경우 location으로 이동한다는 의미이다. location의 코드는 지역의 8080으로 이동하는 것이며, 현재 어플리케이션이 작동중인 포트이다.

Let's Encrypt의 설치 및 설정

  • Let's Encrypt의 설치의 기본적인 도구는 certbot이다.내가 성공한 certbot 설치 과정은 아래와 같다. Certbot의 종속성에 필요로 한 EPEL7 저장소를 설치한 후 certbot을 설치한다.
cd /home/ec2-user
sudo wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/
sudo rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm
sudo yum-config-manager --enable epel*
sudo yum repolist
sudo yum install -y certbot
sudo yum install certbot-nginx
sudo service nginx stop
sudo certbot --nginx

참고 : https://flamingotiger.github.io/backend/devOps/aws-linux2-certbot-nginx/#lg=1&slide=2
  • 여기서 nginx의 설치 과정에 문제가 발생했다. 설치 과정에서 domain을 요구할 때, savemecadet.click을 입력해도 작업이 진행 되지 않았다. 그래서 아래의 코드를 대신하여 domain을 설정할 수 있었다.
  • www.savemecadet.click 도 적어줘야했음..
sudo certbot --nginx -d savemecadet.click -d www.savemecadet.click
  • 어떤 경우, certbot의 설치만으로도 nginx의 conf 설정을 자동으로 해준다고 한다. 나의 경우 그렇지 않았다. /etc/nginx/nginx.conf 을 아래와 같이 직접 수정했다.

aws Route 53

  • aaaa recode 와 a 레코드 설정
  • a 레코드는 ipv4 주소 aaaa 레코드는 ipv6 주소인데 ipv4 변형 하면됐음

nginx 설정 파일 수정

  • nginx를 통해 포트의 흐름을 변경해야 한다. 우리가 해야할 것은 80포트를 433(https)으로 리다이렉트 해야하며, 433을 8080으로 리다이렉트 해야 한다.
  • 먼저 80 -> 433을 해보자.
    server {
        listen       80;
        listen       [::]:80;
        server_name  doreview.ga

        listen 443 ssl; # managed by Certbot

        root /var/www/html;

        # RSA certificate
        ssl_certificate /etc/letsencrypt/live/doreview.ga/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/doreview.ga/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

        if ($scheme != "https") {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    }
  • 위의 코드에서 핵심은 $scheme != "https" 이다. https가 아니면 https로 리다이렉트 한다.
  • 그 다음 과정은 433(https) -> 웹 어플리케이션(8080)이다. 그 코드는 아래와 같다.
# SSL configuration
   server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name doreview.ga
        listen 443 ssl; # managed by Certbo
        root /var/www/html;

        ssl_certificate      /etc/letsencrypt/live/doreview.ga/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/doreview.ga/privkey.pem;

        # Required for LE certificate enrollment using certbot
        include /etc/nginx/default.d/*.conf;

        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;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}
profile
신입 개발자

0개의 댓글