logo

Nginx SSL 적용

Server Side March 19, 2019

PHP 환경을 이용할 때 많이 사용하는 Nginx 환경에서 SSL 적용방법에 대해 아래와 같이 기록을 남겨둡니다.

 

웹 인증서를 발급받으셧다면 crt, key, pem 파일들을 제공받으셨을 겁니다. 먼저 이 파일들을 웹 서버에 두어야 하기 때문에 파일질라나 기타 ftp 프로그램을 이용해 웹서버에 위치시킵니다.

 

저같은 경우엔 /etc/nginx/ssl 위치에 인증서를 보관하기로 했습니다.

그리고 nginx 서버가 이 인증서를 인식하게하기 위해, 그리고 더 나이가 http 연결을 https 연결로 리다이렉팅 하기위해 몇가지 서버설정을 해주어야 합니다.

 

 

먼저 기존 80포트로 들어오는 http 요청을 https 요청으로 리다이렉트해주기 위해 서버 설정을 2개 더 위에처럼 적어줍니다. (기존 서버 설정 위에 추가로적는 사항입니다.)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# sudo vi /etc/nginx/sites-available/default
...
 
server {
        listen 80;
        listen [::]:80;
        server_name erulabo.com www.erulabo.com;
        return 301 https://erulabo.com$request_uri;
}
 
server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name www.erulabo.com;
        return 301 https://erulabo.com$request_uri;
 
        ssl on;
        ssl_certificate /etc/nginx/ssl/erulabo_com.crt;
        ssl_certificate_key /etc/nginx/ssl/erulabo_com_SHA256WITHRSA.key;
        ssl_prefer_server_ciphers on;
}
cs

 

이어서 기존 서버설정에서 80번 포트의 요청을 아래처럼 #주석으로 처리합니다.

 

 

그리고 여기에도 ssl 관련 설정을 추가합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# sudo vi /etc/nginx/sites-available/default
...
 
server {
    ...
 
    listen [::]:443 ssl default_server;
 
    server_name erulabo.com;
 
    ssl on;
    ssl_certificate /etc/nginx/ssl/erulabo_com.crt;
    ssl_certificate_key /etc/nginx/ssl/erulabo_com_SHA256WITHRSA.key;
    ssl_prefer_server_ciphers on;
 
    ...
cs

 

모든 서버설정을 수정했으면 :wq로 변경사항을 저장하고 nginx 서버를 재시작합니다.

 

위 설정을 적용하면 http://erulabo.com 접근요청은 서버에서 자동으로 https://erulabo.com 으로 리다이렉트 해주고 모든 연결은 보안설정됩니다.

끝!