개발
백엔드
Nginx SSL 적용
560 views as of March 19, 2019.
⚠ 이 글은 2년 이상 지난 이야기에요. 읽으실때 참고!
PHP 환경을 이용할 때 많이 사용하는 Nginx 환경에서 SSL 적용방법에 대해 아래와 같이 기록을 남겨둡니다.
웹 인증서를 발급받으셧다면 crt
, key
, pem
파일들을 제공받으셨을 겁니다. 먼저 이 파일들을 웹 서버에 두어야 하기 때문에 파일질라나 기타 ftp 프로그램을 이용해 웹서버에 위치시킵니다.
저같은 경우엔 /etc/nginx/ssl
위치에 인증서를 보관하기로 했습니다.
그리고 nginx 서버가 이 인증서를 인식하게하기 위해, 그리고 더 나이가 http 연결을 https 연결로 리다이렉팅 하기위해 몇가지 서버설정을 해주어야 합니다.
# Default server configuration
#
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;
}
Copy
먼저 기존 80포트로 들어오는 http 요청을 https 요청으로 리다이렉트해주기 위해 서버 설정을 2개 더 위에처럼 적어줍니다. (기존 서버 설정 위에 추가로적는 사항입니다.)
# 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;
}
Copy
이어서 기존 서버설정에서 80번 포트의 요청을 아래처럼 #주석으로 처리합니다.
server {
# listen 80 default_server;
# listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
listen 443 ssl 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;
root /var/www/html;
# Add index.php to the list if you are using PHP
# index index.html index.htm index.nginx-debian.html;
index index.php;
}
Copy
그리고 여기에도 ssl 관련 설정을 추가합니다.
# 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;
...
Copy
모든 서버설정을 수정했으면 :wq
로 변경사항을 저장하고 nginx 서버를 재시작합니다.
위 설정을 적용하면 http://erulabo.com 접근요청은 서버에서 자동으로 https://erulabo.com 으로 리다이렉트 해주고 모든 연결은 보안설정됩니다.
끝!
#Nginx #SSL
0
개의 댓글
백엔드 콜렉션의 다른 글
개발 카테고리의 다른 글
03/20/2019
파이썬으로 웹사이트 상태 체크하기
사이트가 죽어버렸다최근에 관리하던 서버 중 데이터베이스 서버가 주말간에 죽어버리는 상황이 발생했습니다.호스팅 서버 자체...
03/19/2019
Nginx 404 에러 페이지 리다이렉트
잘못된 경로로 서버에 요청했을 경우 일반적으로 Nginx 서버가 만들어주는 404 Not Found 디폴트 페이지가 보입니다. 뭐 이대로...
03/19/2019
ssh 터미널 접근시 발생하는 문제에 대해
오랜만에 블로그가 구동되고있는 아마존 Lightsail에 접속하려니 아래 메시지가 뜨면서 접속이 안됩니다. ㅠㅠ MacOS에서 터미널...