본문 바로가기
개발/Nginx

Centos 7 nginx https 설정

by JunsC 2024. 6. 1.
728x90

Centos 7 환경에서 nginx 로 https 로 리다이렉트 할 수 있도록 설정해주고 싶었다.

ssl 구입하는데 기본 몇만원이라는 가격뿐만 아니라 간단하게 연습용으로 할 수 있는 방법을 원했다.

certbot 이라는 ssl 연습 툴이 있길래 그 부분을 사용해서 ssl을 적용해보았다.

 

 


 

Nginx 설치

 

 

CentOS 7에서 Nginx를 설치하는 방법은 다음과 같습니다.

1. EPEL 저장소 추가

CentOS 7에서는 기본 저장소에 Nginx가 포함되지 않으므로, EPEL(Extra Packages for Enterprise Linux) 저장소를 추가해야 합니다.

sudo yum install -y epel-release

 

2. Nginx 설치

EPEL 저장소를 추가한 후, Nginx를 설치합니다.

sudo yum install -y nginx

 

3. Nginx 실행 및 부팅 시 자동 실행 설정

설치가 완료되면 Nginx를 시작하고, 부팅 시 자동 실행되도록 설정합니다.

sudo systemctl start nginx
sudo systemctl enable nginx

 

4. 방화벽 설정 (필요 시)

방화벽이 활성화된 경우, HTTP 및 HTTPS 트래픽을 허용해야 합니다.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

5. Nginx 상태 확인

Nginx가 정상적으로 실행 중인지 확인합니다.

sudo systemctl status nginx

6. 설치 확인

웹 브라우저에서 http://your_server_ip/ 로 접속하면 Nginx 기본 페이지가 나타나야 합니다.

 


 

7. Nginx 기본 설정 파일 경로

설치 후 Nginx의 주요 설정 파일 경로는 다음과 같습니다.

  • 메인 설정 파일: /etc/nginx/nginx.conf
  • 서버 블록 설정: /etc/nginx/conf.d/
  • 로그 파일:
    • 액세스 로그: /var/log/nginx/access.log
    • 에러 로그: /var/log/nginx/error.log

 

8. Nginx 재시작 및 설정 적용

Nginx 설정을 변경한 후에는 반드시 재시작해야 합니다.

sudo systemctl restart nginx  # 설정 변경 후 적용
 

이제 CentOS 7에서 Nginx가 정상적으로 실행될 것입니다! 🚀

 

 

 

Let's Encrypt 에 대해 알아보자 이는 https 를 ssl 구입없이 무료로 해주는 라이브러리 이다.

 

1. Let’s Encrypt란?

Let’s Encrypt는 무료 SSL/TLS 인증서를 발급해 주는 인증 기관(CA, Certificate Authority) 이야.
즉, 웹사이트에서 HTTPS(SSL 보안 연결)를 적용할 수 있도록 도와주는 서비스야.

🔹 특징

  • 무료: 기업이든 개인이든 누구나 공짜로 사용 가능.
  • 자동화: certbot 같은 툴을 사용하면 인증서 발급과 갱신을 자동으로 할 수 있음.
  • 오픈소스: 전 세계 개발자들이 기여하는 공개 프로젝트.
  • 신뢰성: 대부분의 브라우저와 운영체제에서 신뢰하는 인증 기관.

🔹 Let’s Encrypt가 필요한 이유

  1. 보안 강화
    • HTTPS(SSL) 적용으로 데이터 암호화
    • 중간자 공격(Man-in-the-Middle Attack) 방지
    • 개인정보 보호 (예: 로그인 정보, 결제 정보 등)
  2. SEO(검색 엔진 최적화) 효과
    • Google은 HTTPS가 적용된 사이트를 우선순위로 두고 검색 랭킹을 높여줌.
    • SSL 미적용 사이트는 "안전하지 않음" 경고가 뜰 수 있음.
  3. 신뢰성 증가
    • 방문자가 "보안 연결(🔒 자물쇠 아이콘)"을 보고 안심할 수 있음.
    • 온라인 쇼핑몰이나 로그인 시스템이 있는 사이트에 필수적임.

2. Let’s Encrypt SSL 발급 원리

  1. 사용자가 certbot 같은 클라이언트를 실행해 인증서를 요청함.
  2. Let’s Encrypt 서버가 도메인 소유권 확인을 위해 인증 파일을 웹서버에 업로드하도록 요청함.
  3. 인증이 성공하면 SSL 인증서 발급.
  4. 인증서는 90일마다 갱신해야 함 → 자동 갱신 설정 가능.

3. Let’s Encrypt 단점은?

  • 90일마다 갱신해야 함 → 하지만 자동 갱신 설정하면 문제 없음.
  • EV(Extended Validation) 인증서 미지원 → 기업용 최고 등급 인증서는 지원하지 않음.
  • 인증서 발급 시 서버가 인터넷에 연결되어 있어야 함.

4. Let’s Encrypt vs 유료 SSL 차이점

구분Let’s Encrypt유료 SSL 인증서

가격 무료 연간 비용 발생
인증서 종류 DV(Domain Validation)만 지원 DV, OV, EV 지원
신뢰 수준 일반적인 보안 수준 기업 신뢰도까지 검증
적용 가능 대상 개인, 중소기업, 블로그 대기업, 금융기관, 쇼핑몰
갱신 주기 90일 (자동 갱신 가능) 1~2년 (갱신 필요)

📌 일반적인 웹사이트(개인 블로그, 회사 홈페이지, 커뮤니티)에서는 Let’s Encrypt로 충분함.
📌 금융기관이나 대기업은 유료 SSL을 쓰는 게 더 신뢰도를 높일 수 있음.

 

 

 

CertBot 설치

 

1. EPEL 저장소 추가

Certbot은 기본적으로 CentOS에 포함되어 있지 않아서 EPEL 저장소를 추가해야 해.

sudo yum install -y epel-release

 


 

2. Certbot 설치

이제 Certbot을 설치하자.

 
sudo yum install -y certbot python2-certbot-nginx

설치가 끝났는지 확인해보자.

 
certbot --version

버전 정보가 나오면 정상적으로 설치된 거야.

 


 

3. Nginx 설정 파일 수정 (도메인 설정)

SSL 인증서를 발급받으려면 도메인이 있어야 해.
Nginx 설정 파일을 수정해서 도메인을 등록하자.

sudo vi /etc/nginx/conf.d/default.conf
 

이 안에서 server_name 부분을 설정해 줘.

 
server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }
}
 

파일 저장하고 나와서 Nginx를 재시작하자.

 
sudo systemctl restart nginx

 


 

4. Certbot으로 SSL 인증서 발급

이제 Let's Encrypt SSL 인증서를 발급받자.

sudo certbot --nginx -d example.com -d www.example.com

 

위 명령어에서 -d 뒤에는 네가 사용할 도메인을 입력하면 돼.
인증서 발급 과정에서 이메일 입력, 이용 약관 동의, HTTP → HTTPS 리디렉션 설정 등을 묻는데, 원하는 대로 선택하면 돼.

설정이 끝나면 Certbot이 자동으로 Nginx 설정을 수정해 줄 거야.

 


 

5. SSL 자동 갱신 설정

Let's Encrypt 인증서는 90일마다 갱신해야 해.
자동 갱신을 설정하면 편하니까 크론잡(cron job)을 추가하자.

sudo crontab -e

 

여기 맨 아래에 다음 내용을 추가해.

0 3 * * * certbot renew --quiet && systemctl reload nginx

 

이 설정은 매일 새벽 3시에 자동으로 SSL 인증서를 갱신하는 거야.


6. 설정 확인

이제 웹 브라우저에서 https://example.com 으로 접속해서 SSL이 적용되었는지 확인해 봐.
잘 나오면 성공한 거야! 🎉

 

 

 

 

 

'개발 > Nginx' 카테고리의 다른 글

Nginx_ http Header 설정  (0) 2025.03.03
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."