나는 회사에서 구매한 ssl 인증서인 .pfx 파일을 이용하여 ssl 설정을 하였다.
인증서 .crt, .rsa 키 생성
openssl pkcs12 -in /usr/local/nginx/ssl/xxx.pfx -clcerts -nokeys -out /usr/local/nginx/ssl/xxx.crt
openssl pkcs12 -in /usr/local/nginx/ssl/xxx.pfx -nocerts -nodes -out /usr/local/nginx/ssl/xxx.rsa
openssl s_server -www -accept 443 -cert /usr/local/nginx/ssl/xxx.crt -key /usr/local/nginx/ssl/xxx.rsa
// /etc/nginx/nginx.conf
user root;
worker_processes auto;
error_log /var/log/nginx/error.log notice; // nginx 에러가 나는 경우 error.log에서 확인
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
autoindex on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
// /etc/nginx/conf.d/ 안에 있는 .conf로 된 모든 파일들을 이 파일에서 실행시킴
}
// /etc/nginx/conf.d/domain.conf
server {
listen 80;
listen [::]:80;
server_name www.domain.com domain.com; // 도메인 명
// 301은 리다이렉트를 의미
// 사용자가 http(80번 포트)로 들어오면 https(443)로 리다이렉트 해줌
return 301 https://$host$request_uri;
}
server {
listen [::]:443 ssl;
listen 443;
server_name www.domain.com domain.com;
root /www/domain_2022/; // 프로젝트 디렉토리
location / {
proxy_pass http://localhost:4000; // 4000번에서 실행 중인 nextjs 프로젝트로 연결
}
ssl on;
ssl_certificate /etc/ssl/domain.crt; // 위에서
ssl_certificate_key /etc/ssl/domain.rsa;
ssl_prefer_server_ciphers on;
}
프로젝트 디렉토리로 이동 → ( 프로젝트 빌드 ) → 프로젝트 백그라운드 실행
nextjs 프로젝트/package.json
// package.json
{
"name": "homepage-2022",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start -p ${PORT:-4000}", // 4000번 포트에서 실행
"lint": "next lint"
},
"dependencies": {
// 생략
},
"devDependencies": {
// 생략
}
}
systemctl start nginx
서버에 파일 올릴 땐 전체 파일 다 올리는건가요? 기본 리액트는 빌드 된 것만 올리는데 넥스트는 어떤식으로 올리는건지요.?