์ธํ”„๋ผ

[์ธํ”„๋ผ] Vue.js, React ๋ฐฐํฌ ์ดํ›„ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด 404 Not Found

HHRR 2024. 7. 11. 13:58
๋ฌธ์ œ ์ƒํ™ฉ

 

ํ”„๋ก ํŠธ๋ฅผ Nginx๋ž‘ Docker๋ฅผ ์ด์šฉํ•ด EC2์— ๋ฐฐํฌํ•ด๋†จ๋Š”๋ฐ, ๋ฐฐํฌํ•œ ํ”„๋ก ํŠธ ์„œ๋ฒ„์— ์ ‘์†ํ–ˆ์„ ๋•Œ ์ƒˆ๋กœ๊ณ ์นจํ•˜๊ฑฐ๋‚˜ url์„ ์ž…๋ ฅํ•ด์„œ ์ ‘์†ํ•˜๋ฉด 404 Not Found ํŽ˜์ด์ง€๊ฐ€ ๋œจ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ` GET http://{ํ”„๋ก ํŠธ ์„œ๋ฒ„ ip}/login 404 (Not Found) ` ์ด๋Ÿฐ์‹์œผ๋กœ..

 

์ฐพ์•„๋ณด๋‹ˆ Vue.js ํ”„๋กœ์ ํŠธ์—์„œ๋Š” History ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Vue Router๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋‹ˆ, ์‹ค์ œ๋กœ ์„œ๋ฒ„ ์„ค์ •์—์„œ ์ ์ ˆํ•œ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

  • History ๋ชจ๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ์—์„œ ๋ผ์šฐํŒ…์„ ๋‹ด๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ URL์„ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ ๊ณ ์นจ์„ ํ•  ๋•Œ ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น ๊ฒฝ๋กœ์˜ ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†์–ด์„œ 404 ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

ํ˜„์žฌ๋Š” Vue.js๋กœ ๋ฐฐํฌํ•œ ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ธ๋ฐ, ์ด์ „์— React๋กœ ๋ฐฐํฌํ–ˆ์„๋•Œ๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์ ์ด ์žˆ์—ˆ๋‹ค.

 

ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

 

1. nginx ์„ค์ • ํŒŒ์ผ ๋ณ€๊ฒฝ ํ•„์š”

๋ชจ๋“  ์„œ๋ฒ„ ์š”์ฒญ์„ index.html๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ํ•˜๊ฒŒ๋” nginx ์„ค์ • ํŒŒ์ผ์„ ๋ฃจํŠธ์— ์ƒ์„ฑํ•ด์ค€๋‹ค.

server {
    listen 80;
    server_name {๋„๋ฉ”์ธ ์ž…๋ ฅ};

    location / {
        root /usr/share/nginx/html;
        try_files $uri $uri/ /index.html;
    }
}

default.conf

 

2. ๋„์ปค๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ด์„œ ๋ฐฐํฌ์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋„์ปคํŒŒ์ผ์—์„œ nginx ์„ค์ •ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋„์ปค ์ด๋ฏธ์ง€ ๋‚ด์— ์œ„์น˜ํ•˜๋„๋ก ํ•ด์ค€๋‹ค.

# ์‚ฌ์šฉ์ž ์ •์˜ Nginx ์„ค์ • ํŒŒ์ผ ๋ณต์‚ฌ
COPY ./default.conf /etc/nginx/conf.d/default.conf

Dockerfile

 

3. ์ดํ›„ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋‹ˆ, ์˜ค๋ฅ˜๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.