nginx 설치 및 https 적용

1

nginx 설치

$ sudo apt install nginx

먼저 저희의 우분투에 nginx를 설치합니다.

$ cd /etc/nginx/conf.d
$ vim default.conf

/etc/nginx/conf.d 디렉토리로 이동한다음 default.conf파일을 만들어 줍니다.

server {
    listen       80;
    listen  [::]:80;
    server_name [your_server_domain];

    location / {
        proxy_pass http://127.0.0.1:4000;
    }
}

우리는 nginx를 reverse proxy역할로 사용하여, 80번으로 들어온 요청은 우리 서버가 작동하고 있는 4000번 port로 연결해주고, http로 들어온 요청을 443port로 redirect시켜준 다음 다시 우리서버인 4000번 port로 연동해줄 것입니다. 따라서 위 같이 적어줍니다.

server_name에는 서버 도메인 이름을 적어주고, location에는 redirect시켜줄 주소와 port를 작성해줍니다. 이상하게 location에 도메인 네임을 적어주면 nginx가 제대로 proxy역할을 수행해주지 못하는 현상이 있었는데, 이에대해선 나중에 알아보겠습니다.

certbot설치

sudo snap install certbot --classic

certbot을 설치해줍니다. 저희는 Let's Encrypt에서 무료 인증서를 발급받을 건데, Certbot은 Let's Encrypt 공개 인증 기관에서 제공하는 SSL/TLS 인증서를 자동으로 발급, 갱신 및 관리하기 위한 도구입니다.

$ sudo certbot --nginx

이제 Certbot을 사용하여 Nginx 웹 서버와 함께 SSL/TLS 인증서를 설정해줍니다.

server {
        server_name [your_server_domain];

        location / {
                proxy_pass http://127.0.0.1:4000;
        }

        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/api.to1step.shop/fullchain.pem; # managed by Cert>
        ssl_certificate_key /etc/letsencrypt/live/api.to1step.shop/privkey.pem; # managed by Ce>

        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

# 80 포트로 접근시 443 포트로 리다이렉트 시켜주는 설정
server {
        if ($host = [your_server_domain]) {
                return 301 https://$host$request_uri;
        } # managed by Certbot

        listen 80;
        server_name [your_server_domain];
        return 404; # managed by Certbot
}

그럼 아까 작성했던 default.conf가 이렇게 바뀌어있을 겁니다. 80으로 들어온 요청을 443포트로 redirect 시키는 설정이 추가되었군요.

# ngnix 오류 테스트 - syntax is ok
sudo nginx -t
# nginx 번경사항 업데이트 (재시작)
sudo service nginx restart

그 다음, nginx에 변경사항을 적용해주기 위해서 재시작해줍니다.

하지만 80으로 들어갔더니.. 이렇게 나왔군요

확인하니 우리서버가 작동하고 있는 4000번 포트의 방화벽이 차단되어 있었네요. 활성화해줍시다!
왜 방화벽을 차단했을 땐, 되지 않았을까요? 당연하지! 이런 대답말고 정확한 이유를 알아봅시다.. 공부하고 이어 적겠습니다.

$ cat /var/log/nginx/error.log

에러가 난다면 이 경로에서 확인해줍시다.

profile
https://www.youtube.com/watch?v=__9qLP846JE

0개의 댓글