apt update
이후 nginx를 설치해줍니다.
apt install nginx
설치가 완료 되었다면 아래 명령어로 구동 상태를 확인합니다.
systemctl status nginx
service nginx status
설치 후 주소창에 localhost를 입력하면 또는 서버의 ip를 입력하여 접속하게 되면
nginx 기본 홈페이지를 확인 할 수 있습니다.
ubuntu 기준
/var/www/html - 정적 파일 폴더 경로
/etc/nginx/* - nginx 설정 파일
/etc/nginx 폴더 하위에 sites-available 폴더와 sites-enabled 폴더가 위치해 있는데
보통 sites-available 폴더에 nginx에 대한 서버 설정 파일을 생성하고
sites-enabled 폴더에 파일의 링크를 생성하여 적용하는 방법을 사용한다.
/var/www/html 폴더 밑에 index.html 파일을 생성 합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>nginx</title>
</head>
<body>
<h2>Hello World!</h2>
</body>
</html>
해당 파일의 내용 입니다.
/etc/nginx/sites-available 폴더 밑에 default 파일을
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html;
server_name <호스트 이름>;
location / {
try_files $uri $uri/ =404;
}
}
위 코드와 같이 변경 하였습니다.
rm -f /etc/nginx/sites-enabled/default
ln /etc/nginx/sites-available/default ../sites-enabled/default
nginx -s reload
이후 sites-enabled 폴더 내 nginx 기본 설정 파일을 제거 하고
수정 한 default 파일을 sites-enabled 폴더에 default로 링크를 추가하고
nginx 설정 파일을 리로드 시켜줬습니다.
사이트에 접속하게 되면 우리가 설정 했던 HTML 파일을 확인 할 수 있습니다.
Let's Encrypt를 사용하여 SSL 적용을 위해
apt install certbot
명령어를 입력하여 certbot을 설치합니다.
nginx -s quit
certbot certonly --standalone -d <도메인>
standalone 방식으로 SSL을 적용하기 위해 nginx를 종료하여 줍니다.
(certbot이 80포트를 사용 할 예정)
이후 명령어를 사용해 해당 도메인에 대한 SSL 인증서를 발급 받습니다.
만일 인증서 발급 진행 중 CCA 오류가 뜬다면
해당 도메인에 CAA 레코드를 생성하여 let's encrypt를 추가해 줍니다.
유형 CAA 값 0 issue "letsencrypt.org"
https://letsencrypt.org/ko/docs/caa/ - 해당 오류에 대한 문서
Certificate is saved at: /etc/letsencrypt/live/<도메인>/fullchain.pem
Key is saved at: /etc/letsencrypt/live/<도메인>/privkey.pem
인증서 발급에 성공 하였다면 콘솔창에 위와 같은 로그를 확인 할 수 있습니다.
해당 도메인의 대한 키 파일의 경로 입니다.
SSL 적용을 위해 /etc/nginx/sites-available/default 파일을 열어서
server {
listen 443 ssl;
server_name <도메인>;
root /var/www/html;
index index.html;
ssl_certificate /etc/letsencrypt/live/<도메인>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<도메인>/privkey.pem;
location / {
try_files $uri $uri/ =404;
}
}
해당 server 블럭을 추가해 줍니다.
이후 멈춰 놨던 nginx를 실행 시키기 위해
systemctl start nginx
service nginx start
명령어로 nginx를 구동 후
https://localhost 로 접속하여 SSL적용 여부를 확인해줍니다.
http 접속시 https로 redirect를 시키고 싶으시다면 default 파일을 아래와 같이 변경해주세요.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name <도메인>;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name <도메인>;
ssl_certificate /etc/letsencrypt/live/<도메인>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<도메인>/privkey.pem;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}