💡Event-Driven : Apache의 C10K 문제점(한 시스템에 동시 접속자수가 1만명이 넘어갈 때) 해결을 위해 만들어진 이벤트 기반 구조를 Event-Driven 구조의 웹서버라고 부름
이 문서는 CRA (Create React App) 프로젝트로 생성된 프로젝트 기반으로 작성
💡 최신버전 설치하기 : https://it-svr.com/ubuntu-22-04-lts-nginx-install/
다음 명령어로 nginx를 설치
sudo apt install nginx
설치가 완료되면 /etc/nginx 경로에 설정파일들이 생성
// 백업(선택)
sudo cp -r /etc/nginx/sites-available/ /etc/nginx/sites-available-origin
sudo cp -r /etc/nginx/sites-enabled/ /etc/nginx/sites-enabled-origin
// 삭제
sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default
// 생성
sudo vi /etc/nginx/sites-available/admin.conf
// 추가
server {
listen 80;
location / {
root /home/apps/build;
index index.html index.htm;
try_files $uri /index.html;
}
location /arxbses {
proxy_pass http://127.0.0.1:3030;
}
}
https 적용 설정내용
// 아래내용 추가
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
location = /robots.txt {
add_header Content-Type text/plain;
return 200 "User-agent: *\nDisallow: /\n";
}
location / {
root /home/apps/build;
index index.html index.htm;
try_files $uri /index.html;
}
location /arxpc {
proxy_pass https://127.0.0.1:3030;
}
ssl_certificate /home/apps/mkcert/cert.pem;
ssl_certificate_key /home/apps/mkcert/key.pem;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
add_header X-Frame-Options DENY;
add_header X-XSS-Protection "1; mode=block";
add_header Expect-CT 'enforce; max-age=300';
add_header Content-Security-Policy "script-src 'self'; style-src 'self' 'unsafe-inline'; object-src 'none';";
set $CSP_image "img-src 'self' ;";
set $CSP_script "script-src 'self' ; ";
set $CSP_style "style-src 'self' ; ";
set $CSP_font "font-src 'self' ; ";
set $CSP_frame "frame-src 'self' ; ";
set $CSP_object "object-src 'self' ; ";
set $CSP "default-src 'self' ; ${CSP_image} ${CSP_script} ${CSP_style} ${CSP_font} ${CSP_frame} ${CSP_object}";
#add_header Content-Security-Policy $CSP;
}
sudo ln -s /etc/nginx/sites-available/admin.conf /etc/nginx/sites-enabled/admin.conf
sudo systemctl restart nginx
sudo systemctl status nginx
💡 Tip : 방화벽이 설정되어 있는경우 80포트를 허가해주어야 외부에서 접근 가능
nginx는 삭제한 이후에 폴더가 완전히 삭제가 되지 않으므로 완전한 삭제 방법을 진행하여 완전하게 삭제
sudo apt remove nginx nginx-common
sudo apt purge nginx nginx-common
sudo apt autoremove
sudo rm -rf /etc/nginx
Nginx를 이용해 웹서버를 올린 후 브라우저에서 파일 전송시 다음과 같은 에러가 발생하는 경우
Failed to load resource: the server responded with a status of 413
// 설정파일 오픈
sudo vi /etc/nginx/nginx.conf
// 기존 설정파일내용
http {
...
client_max_body_size 10M; // 맥스 사이즈 추가 (디폴트 1M)
}
server {
listen 80 default_server;
listen [::]:80 default_server;
return 301 https://$host$request_uri;
}
// 사용자 설정파일 오픈
sudo vi /etc/nginx/sites-enabled/myapp.conf
// 기존 설정파일내용
server {
listen 80;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
add_header Strict-Transport-Security max-age=63072000;
//add_header Strict-Transport-Security "max-age=63072000" always;
}
// 설정파일 오픈
sudo vi /etc/nginx/nginx.conf
// 추가
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
// 혹은
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
https://velog.io/@wijihoon123/Nginx란-무엇인가
https://ssdragon.tistory.com/60
https://www.hanumoka.net/2019/12/29/react-20191229-react-nginx-deploy/
http://techtree.kr:8090/display/TEC/Nginx+-+Chapter+3+-+Uninstall+and+reinstall