user booquiz;
events {
worker_connections 1024;
}
http {
include mime.types;
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/booquiz.kro.kr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/booquiz.kro.kr/privkey.pem;
# Disable SSL
ssl_protocols TLSv1.2 TLSv1.3;
# 통신과정에서 사용할 암호화 알고리즘
ssl_prefer_server_ciphers off;
# Enable HSTS
# client의 browser에게 http로 어떠한 것도 load 하지 말라고 규제합니다.
# 이를 통해 http에서 https로 redirect 되는 request를 minimize 할 수 있습니다.
add_header Strict-Transport-Security "max-age=31536000" always;
# SSL sessions
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1h;
# /api 경로를 백엔드 서버로 프록시
location /api {
rewrite ^/api/?(.*)$ /$1 break;
proxy_pass <http://10.0.1.6:3000>;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 정적 파일 서빙 설정
location / {
root /static;
index index.html;
try_files $uri $uri/ /index.html;
}
}
sudo certbot --nginx -d [booquiz.kro.kr](<http://booquiz.kro.kr/>) -d [booquiz.kro.kr](<http://booquiz.kro.kr/>)
cerbot의 명령어를 통해 인증서를 발급 받을 수 잇습니다./etc/letsencrypt/live/booquiz.kro.kr/fullchain.pem;
/etc/letsencrypt/live/booquiz.kro.kr/privkey.pem;
server {
listen 80;
return 301 https://$host$request_uri;
}
ssl_prefer_server_ciphers
설정 최적화
ssl_prefer_server_ciphers off;
현재 ssl_prefer_server_ciphers on;
로 설정되어 서버가 선호하는 암호화 알고리즘을 우선하게 되어 있는데, 대부분의 경우 최신 브라우저의 암호화 알고리즘을 우선하는 것이 더 나은 성능과 보안을 제공합니다.
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1h;
SSL 세션 캐시를 10m
로 설정하였지만, 세션 캐시를 더 넉넉하게 50m
정도로 지정하는 것이 좋습니다. ssl_session_timeout
도 10m
에서 1h
로 늘려서 성능을 향상시킬 수 있습니다.
Strict-Transport-Security
add_header Strict-Transport-Security "max-age=31536000" always;
브라우저가 처음 HTTPS로 사이트에 접속할 때, 서버는 Strict-Transport-Security
헤더를 응답에 포함합니다.