개발
Nginx SSL 적용
⚠ 이 글은 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
파이썬으로 웹사이트 상태 체크하기
사이트가 죽어버렸다최근에 관리하던 서버 중 데이터베이스 서버가 주말간에 죽어버리는 상황이 발생했습니다.호스팅 서버 자체는 문제가 없었지만 데이터베이스쪽이 다 죽어버려서 데이터베이스 접근요청이 되는 페이지에서 전부 500 에러를 뱉으며 에러페이지가 속출했습니다.주말간 클라이언트에게 메일세례는 기본이고...

03/19/2019
Nginx 404 에러 페이지 리다이렉트
잘못된 경로로 서버에 요청했을 경우 일반적으로 Nginx 서버가 만들어주는 404 Not Found 디폴트 페이지가 보입니다. 뭐 이대로 그냥 보여줘도 되지만 검색엔진 최적화(SEO)나 봇들은 이 페이지를 사용자에게 보여준다는거 자체에 감점요인이 많은것 같더군요.흔히말해서 사용자가 좀더 직관적으로 이해할 수 있는 404 페...
03/19/2019
ssh 터미널 접근시 발생하는 문제에 대해
오랜만에 블로그가 구동되고있는 아마존 Lightsail에 접속하려니 아래 메시지가 뜨면서 접속이 안됩니다. ㅠㅠ MacOS에서 터미널로 ssh 요청을 하니 아래와 같은 에러 메시지가 보이더라구요. 무엇이 문제인가 알아보니 RSA 공유키가 충돌이 되서 생기는 문제라고합니다. 출처에서 자세하게 설명이 되어있지만 생각정리를...