Nginx Web Server SSL 적용

1 분 소요

Web Server SSL 적용

서버에 SSL 인증서를 설치하고 HTTPS로 접근하도록 포트포워딩을 하는 과정을 요약하였음


1. SSL 적용을 위해 도메인이 필요

도메인 네임서버 : whois


2. NGINX 및 LET’S ENCRYPT 인증서 설치

운영 체제 : Ubuntu 20.04

(1) certbot 설치

Certbot은 Let’s Encrypt 인증서를 자동으로 발급 및 갱신을 해주는 봇 프로그램

sudo apt-get install certbot python3-certbot-nginx

(2) Nginx SSL 설정

sudo vim /etc/nginx/sites-available

경로의 설정파일(파일명 :default) 을 수정한다.

sudo vim /etc/nginx/sites-available/default

① server_name에 만들어둔 도메인을 넣어준다.

server_name test-web.companyname.com

② API node.js 서버는 3000포트이므로 포트포워딩을 설정한다.

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

(파일명 ‘default’ 파일의 설정 소스코드)

server {
    root /var/www/html;

    #도메인 추가
    server_name test-web.companyname.com;
    charset utf-8;

    location / {
        # api node.js 서버포트가 3000이므로 포트포워딩 설정
        proxy_pass http://127.0.0.1:3000;
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/test-web.companyname.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/test-web.companyname.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = test-web.companyname.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80 default_server;
    listen [::]:80 default_server;
    server_name test-web.companyname.com;
    return 404; # managed by Certbot
}

③ 설정을 저장하고 명령어로 재시작

sudo nginx –t

sudo service nginx reload


3.SSL 인증서 획득

sudo certbot –nginx -d test-web.companyname.com

(설명)

1: No redirect - Make no further changes to the webserver configuration.

2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for

모든 HTTP 요청을 HTTPS로 자동 변경하도록 2번 선택한다. 이렇게 하면 80포트에 대한 요청이 SSL 적용된 443포트로 redirect 된다.

4.결과 : 적용 확인

추가적으로 할 설정들

(1) AWS 인바운드 설정

(2) 방화벽 설정

참고 : https://jp-hosting.jp/nginx-lets-encrypt%EB%A5%BC-%ED%86%B5%ED%95%B4-nginx%EC%97%90%EC%84%9C-%EB%AC%B4%EB%A3%8C%EB%A1%9C-https-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0/

(추가)

프로세스가 중단되지 않는 경우 강제로 프로세스 죽이는 방법

실행 중인 프로세스 검색하면 PID 번호가 나오는데, 해당 PID 번호로 강제 종료.

ps –ef grep nginx

sudo kill -9 71428

nginx 상태확인

sudo systemctl status nginx

nginx 시작

sudo systemctl start nginx

태그: ,

카테고리:

업데이트:

댓글남기기