AWS EC2 ์์ Nginx๋ก ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ๋ ๊ฒฝํ ์ ๋ฆฌ๋ฅผ ์ํ ๊ธ.
์ด์ ์ ์๋ธ ๋๋ฉ์ธ์ SSL ์ธ์ฆ๊น์ง ๋ง์ณค๋ค. ๊ทธ๊ฑธ ๊ทธ๋๋ก ์ฌ์ฉํ ์์ ์ด๋ค.
React ํ์ผ ๋น๋, ์๋ฒ ์ ๋ก๋
yarn ํจํค์ง ๋งค๋์ ๋ฅผ ์ฐ๊ณ ์์๋ค. ํ๋ก์ ํธ ํ์ผ์ ๋น๋ํด์ค๋ค.
yarn build
ํ์ผ์ง๋ผ๋ฅผ ์ด์ฉํด EC2์ ๋น๋ํ ํ์ผ์ ์
๋ก๋ํ๋ค. ๊ฒฝ๋ก๋ /home/ubuntu/test/build
Nginx ์ค์
prod ์๋ธ๋๋ฉ์ธ์ผ๋ก ์์ฒญ์ ๋ณด๋์๋ ํด๋น ๋ฆฌ์กํธ ํ์ด์ง๊ฐ ๋ ๋๋ง๋ ์ ์๋๋ก ์ค์ ํ์ผ์ ์์ฑํ๋ค.
location / {
root /home/ubuntu/test/build;
index index.html;
try_files $uri $uri/ /index.html;
}
- location : "/" ๋ก ์์ฒญ์ด ๋ค์ด์์ ๋
- root : ํ์ผ์ ์ฐพ์ root ํด๋๋ฅผ ์ง์
- index : ์ด๋ค ํ์ผ์ index๋ก ํ ์ง ์ค์
- try_files : ๋๋ฉ์ธ์ URI๊ฐ ๋ถ์ด์ ์์ฒญ์ด ๋ค์ด์ฌ๋ ๊ทธ URI์ ์ผ์นํ๋ ํ์ผ์ ์ฐพ๋๋ฐ, ํด๋นํ๋ ํ์ผ์ด ์์ผ๋ฉด index.html์ ๋ณด์ฌ์ค๋ค. react-router-dom์ ์ด์ฉํด์ ํ์ด์ง ๋ผ์ฐํ ์ ํ๊ธฐ ๋๋ฌธ์!!
server {
listen 80;
listen [::]:80;
server_name prod.xxx.shop;
location / {
root /home/ubuntu/test/build;
index index.html;
try_files $uri $uri/ /index.html;
}
return 301 https://prod.xxx.shop$request_uri;
}
server {
#listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
location / {
root /home/ubuntu/test/build;
index index.html;
try_files $uri $uri/ /index.html;
}
server_name prod.xxx.shop;
ssl_certificate /etc/letsencrypt/live/prod.xxx.shop/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/prod.xxx.shop/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
80๋ฒ ํฌํธ๋ก ๋ค์ด์์ ๋๋ https ๋งํฌ๋ก ๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ๊ฑธ์ด์ค๋ค.