티스토리 뷰

Server dev./NGINX

Nginx 초기 설정 https

제이스핀 2024. 1. 31. 23:12
반응형

 

서버에 https 설정하기 위해 이것저것 하라는게 많은데, 여러번 설치 해보면서 깔끔하게 필요한것만 정리해놨음.

Nginx 를 통해 진행한다.

// Nginx 설치
$ sudo apt-get install nginx

 

/etc/nginx/nginx.conf

위 경로 파일을 통해 앞으로의 Nginx 설정을 진행함. (기억해두기)

(TIP) 필자는 해당 /etc/nginx 경로로 그냥 vscode를 켜서 진행한다.

           vscode로 수정할 때 permission 에러가 뜨지 않게  'chown -R [사용자]:[그룹] [디렉토리명]' 을 미리 설정해두자

// certbot 설치
$ sudo apt install certbot
$ sudo apt install python-certbot-nginx (혹은 python3-certbot-nginx)

 

https를 적용하고 port를 설정할 DNS의 인증서발급을 certbot을 통해 진행

$ sudo certbot --nginx -d [ 인증 받을 DNS 주소 ]

 

모두 Y Y 해주면 축하 메시지와 함께

fullchain.pem과 privakey.pem 경로를 알려준다.

 

물론 해당 DNS는 본인것이고 구매를 했어야 함.

해당 DNS를 구매한 사이트 (Google Domain, Gabia, Cloudflare 등) 에서 DNS 레코딩 설정에 연결할 서버의 IP를 설정해두자.

 

이후 아까 기억해두었던 경로의 nginx.conf 파일을 건드려서 세팅을 시작해보자.

 

nginx.conf 파일은 위에 여러 설정값들과 events { } , http { } 로 구성되어있다.

아무것도 하지 않았다면 http { } 안에 아마 아래와 같이 되어있는데, 필자는 sites-enabled 부분을 주석처리하고 그냥 이 파일에 모두 설정한다.

 

이제 아까 받은 pem 키를 사용하여 http 내부 맨 아래에 아래와 같이 작성하여 https를 적용한다.

server {
            server_name example1.com;
            location / {
                        proxy_set_header HOST $host;
                        proxy_pass http://127.0.0.3030;
                        proxy_redirect off;
           } 
            listen 443 ssl;
            ssl_certificate [아까 받았던 fullchain.pem 경로1];
            ssl_certificate_key [아까 받았던 privkey.pem 경로1];
            include /etc/letsencrypt/options-ssl-nginx.conf;
            ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

server {
            server_name example2.com;
            location / {
                        proxy_set_header HOST $host;
                        proxy_pass http://127.0.0.1:3080;
                        proxy_redirect off;
           } 
            listen 443 ssl;
            ssl_certificate [아까 받았던 fullchain.pem 경로2];
            ssl_certificate_key [아까 받았던 privkey.pem 경로2];
            include /etc/letsencrypt/options-ssl-nginx.conf;
            ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

# 80포트로 들어와도 443으로 꺾어줘야 돼
server {
            server_name example1.com example2.com;
            listen 80;
            return 301 https://$host$request_uri;
}

 

nginx 를 재시작하면서 문제 없는지 확인해보자

$ sudo systemctl restart nginx 
$ sudo nginx -t

 

nginx -t 했을때 대충 나쁜말 없고 ok, successful 있으면 완료 된 것.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함