[nginx] 원하는 도메인 HTTPS 인증 받고 원하는 포트로 리버스 프록시 하기

서여·2024년 12월 1일
0

NGINX

목록 보기
1/1

1. 도메인 HTTPS 인증 받기
2. 도메인 원하는 포트에 리버스 프록시 설정하기
3. nginx 설정 적용 하기


1. 도메인 https 인증하기

a. Certbot 으로 인증서 발급 받기

sudo certbot --nginx -d {YOUR_DOMAIN}

b. nginx 설정 적용

설정 적용을 다시 해주는 이유는 certbotnginx의 설정 파일을 직접 수정했기 때문입니다. 아래 코드를 입력해주세요.

sudo nginx -t # 설정 파일 문법 확인
sudo systemctl reload nginx # nginx 리로드

c. 자동 갱신 설정

https 인증은 90일마다 재인증을 해야합니다. 따라서 이를 자동으로 해줄 수 있게 하도록 아래 코드를 입력해주세요.

sudo certbot renew --dry-run

2. 도메인 원하는 포트에 리버스 프록시 설정하기

a. Nginx 설정 파일 열기

sudo {nano, vim} /etc/nginx/sites-available/{YOUR_DOMAIN}

잠깐 짚고 넘어가기

설정 파일명도메인명으로 짓는 이유는 나중에 설정 관리를 편리하게 하기 위해서입니다.
실제로는 /etc/nginx/sites-available 디렉토리 안에 있는 활성화 된 아무 폴더에 이 코드를 작성해도 오류가 나지않습니다.

추가로 활성화와 비활성화 정책에 대해서도 간단히 짚고 가겠습니다.
/etc/nginx/sites-available 이 디렉토리 안에 있는 모든 정책은 비활성화 되어 있습니다.
따라서 /etc/nginx/sites-enabled 디렉토리에 심볼릭 링크를 만들어 정책을 활성화 할 수 있습니다.

심볼릭 링크를 만드는 방법은 다음과 같습니다.

# 문법
sudo ln -s {심볼릭 링크 할 파일의 경로} {심볼릭 링크를 담고싶은 디렉토리 경로}

# 예시
sudo ln -s /etc/nginx/sites-available/{YOUR_DOMAIN} /etc/nginx/sites-enabled/

위의 예시와 같이 정책 파일을 활성화 시킬 수 있습니다.

삭제하는 방법은 즉, 비활성화 하는 방법은 아래와 같습니다.

# 문법
sudo rm -s {삭제할 파일 경로}

# 예시
sudo rm -s /etc/nginx/sites-enabled/{YOUR_DOMAIN}

b. 설정 파일에 http → https로 리다이렉트 설정 후 리버스 프록시 설정 코드 작성

server {
    listen 80;
    server_name {YOUR_DOMAIN};
    return 301 https://$host$request_uri;  # HTTP -> HTTPS 리디렉션
}

server {
    listen 443 ssl;
    server_name {YOUR_DOMAIN};

    ssl_certificate /etc/letsencrypt/live/{YOUR_DOMAIN}/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/{YOUR_DOMAIN}/privkey.pem;

    # 리버스 프록시 설정
    location / {
        proxy_pass http://localhost:{YOUR_PORT_NUMBER};  
        # {YOUR_PORT_NUMBER} 포트로 리버스 프록시
        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;
    }
}

위 코드 타이핑 후 파일 저장

c. 개방되어 있는 포트번호 확인하고, {YOUR_PORT_NUMBER}가 닫혀있다면 포트 개방하기

{YOUR_PORT_NUMBER}가 방화벽에 차단되어있는지 확인
(80이나 443 포트도 리스트에 allow 되어있지 않다면 똑같이 차단 풀어주세요!)

sudo ufw status

차단되어 있다면 포트 개방하기

sudo ufw allow {YOUR_PORT_NUMBER}

d. 설정 적용하기

sudo nginx -t # 오류난다면 오류 해결하기
sudo systemctl reload nginx

3. nginx.conf 파일 수정 후 설정 적용 절차

a. 설정 파일 문법 확인

sudo nginx -t # 설정 파일 문법 확인

성공할 때 까지 반복

b. 설정 적용 (재로드 또는 재시작 둘 중 하나 적용)

sudo systemctl reload nginx # 재로드 (추천) 연결이 끊기지 않고 설정 변경 사항이 적용됨
sudo systemctl restart nginx # 재시작

c. 서비스 상태 확인

sudo systemctl status nginx # 정상 작동 시 Active: active (running)
profile
안녕하세요:) 아키텍트가 되고 싶은 백엔드 개발자 지망생입니다.

0개의 댓글