ubuntu OS에 nginx 설치하기

gclee·2022년 5월 12일
0

목차

  1. nginx설치
  2. 설정 파일
  3. index.html 생성
  4. default 설정 변경
  5. SSL 인증서 발급
  6. SSL 적용

nginx 설치


nginx를 설치하기 이전에 apt 패키지 매니저를 업데이트 해줍니다
apt update 

이후 nginx를 설치해줍니다.

apt install nginx

설치가 완료 되었다면 아래 명령어로 구동 상태를 확인합니다.

systemctl status nginx
service nginx status

Active: active (running) 이라는 메시지를 확인 한다면 서비스가 실행 중 상태임을 의미합니다.

설치 후 주소창에 localhost를 입력하면 또는 서버의 ip를 입력하여 접속하게 되면
nginx 기본 홈페이지를 확인 할 수 있습니다.


설정 파일


ubuntu 기준

/var/www/html - 정적 파일 폴더 경로

/etc/nginx/* - nginx 설정 파일


/etc/nginx 폴더 하위에 sites-available 폴더와 sites-enabled 폴더가 위치해 있는데

보통 sites-available 폴더에 nginx에 대한 서버 설정 파일을 생성하고

sites-enabled 폴더에 파일의 링크를 생성하여 적용하는 방법을 사용한다.


index.html 생성


/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>

해당 파일의 내용 입니다.


default 설정 변경


/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 파일을 확인 할 수 있습니다.

SSL 인증서 발급


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 적용

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

0개의 댓글