Azure에서 서버 구축하기3(리버스 프록시)

NEW IT·2024년 5월 31일
0

Azure

목록 보기
4/4

저번에 말했듯이 오늘은 DNS,SSL인증까지 구성을 해보려고 합니다.

1.DNS 연결

우선 연결할 도메인을 사줘야합니다. 저는 가비아에서 산게 있기 때문에 가비아로 사용해 보도록 하겠습니다.

1-1 A레코드 등록

가비아에서 DNS 관리로 들어가 A레코드를 만들어줍니다. 호스트는 web으로 하고(자유롭게 지정 하셔도 됩니다) web에 공인아이피를 입력해주고 저장을 눌러줍니다.

1-2 Nginx 서버설정

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

server_name에 지정해준 도메인 주소를 입력해줍니다

1-3 테스트

sudo nginx -t  # 설정 파일 테스트  
sudo systemctl restart nginx  # nginx 재시작  

설정을 저장한 후 Nginx를 재시작 해준 뒤 테스트를 해보면 저런식으로 도메인 주소가 나오는것을 확인할 수있습니다.

2.SSL 인증서 발급

다음은 SSL 인증서 발급입니다.

2-1 방화벽 열기

sudo ufw allow 443/tcp  

우선 HTTPS 통신을 위해 443번 방화벽을 열어줍니다. Azure 보안그룹도 동일하게 열어줘야합니다!

2-2 Certbot 설치

sudo apt-get update  
sudo apt-get install certbot python3-certbot-nginx  

Certbot은 Let's encrypt를 이용해서 ssl인증서를 발급, 갱신할 수 있게 도와주는 무료 오픈소스 입니다.

2-3 SSL인증서 설치 및 Nginx 설정 자동화

sudo certbot --nginx -d web.jspark.site 

저는 이미 설치가 되어있기 때문에 reinstall이라 뜨지만 install인 1번을 계속해서 입력해줍니다.

2-4 서버블록 수정

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

다시Nginx 설정파일로 들어가서 서버블록을 수정해줍니다

    server_name web.jspark.site;

    location / {
        return 301 https://$host$request_uri;
    }
}
# HTTPS 서버 블록: 실제 요청을 처리
server {
    listen 443 ssl;
    server_name web.jspark.site;

    ssl_certificate /etc/letsencrypt/live/web.jspark.site/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/web.jspark.site/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $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-Proto $scheme;
    }
}

# 백엔드 서버 설정
upstream backend {
    server 10.1.0.4:8081;
    server 10.1.0.5:8080;
}

2-5 테스트 및 재시작

sudo nginx -t  
sudo systemctl restart nginx  

저장 후 Nginx를 재시작하여 테스트를 해줍니다.

이런식으로 443으로 정상적으로 리다이렉트 하는것을 확인 할 수 있었습니다.
원래는 여기서 DB설치 및 연동까지 해보려고 했는데 분량이 생각보다 많아서 DB부분은 따로 다뤄보도록 하겠습니다. 기본만 적는데도 생각보다 오래걸리네요

profile
신입 클라우드 엔지니어

0개의 댓글