[ํด๊ฒฐ] ๋ฐฐํฌ ํ, ๋๋ฉ์ธ์ url์ ์ง์ ์ ๋ ฅํ๋ฉด ๋ผ์ฐํ ์ด ์๋๋ ๋ฌธ์
๋ฌธ์
router.js
const router = createRouter({
history: createWebHistory('/'),
routes : [
{ path: '/', component: MainPage },
{ path: '/verify', component: VerifyPage },
{ path: '/member/login', component: LoginPage },
{ path: '/seller/login', component: SellerLoginPage },
{ path: '/member/signup', component: SignUpPage },
{ path: '/seller/signup', component: SellerSignUpPage },
{ path: '/cart', component: CartPage },
{ path: '/product/read/:productIdx', component: ProductDetailPage },
{ path: '/product/register', component: ProductRegister },
{ path: '/order/complete', component: OrderCompletePage },
]
})
๋ผ์ฐํฐ ์ค์ ์ ์์ ๊ฐ์ด ๋์ด ์์๋ค.
๋๋ฉ์ธ์ ํ์ www.localfoodpam.kro.kr๋ก ๋ก ์ ์ํด์ ๋ฉ์ธํ์ด์ง์์ ์นดํธ ๋ฒํผ์ ๋๋ฅด๊ฑฐ๋ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ฅด๋ฉด ํด๋น ํ์ด์ง๋ก ๋ผ์ฐํ ์ด ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด์ก๋ค.
ํ์ง๋ง url์ ์ง์ www.localfoodpam.kro.kr/cart ๋ฅผ ์ ๋ ฅํด์ ์ ์ํ๋ ค๊ณ ํ๋ฉด 404 ์๋ฌ๊ฐ ๋ด๋ค.
ํด๊ฒฐ
๋จผ์ , nginx์ ์ค์ ๋ฌธ์ ์๋ค.
SPA (Single Page Application)์์๋ URL์ ํตํด ์ง์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ Nginx๊ฐ ํด๋น ๊ฒฝ๋ก๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ์ง ๋ชปํด์ 404 ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค. SPA์์๋ ๋ชจ๋ ๊ฒฝ๋ก๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋์ HTML ํ์ผ (index.html)๋ก ๋ฆฌ๋๋ ์ ๋์ด์ผ ํ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ Nginx ์ค์ ํ์ผ์์ ๋ชจ๋ ์์ฒญ์ index.html๋ก ๋ฆฌ๋๋ ์ ํ๋๋ก ์ค์ ํ๋ฉด ๋๋ค.
Nginx ์ค์ ํ์ผ ์ ์
sudo vi /etc/nginx/sites-available/default
๊ธฐ์กด ์ฝ๋

์์ ๋ ์ฝ๋
location / {
try_files $uri $uri/ /index.html;
}
์์ฝ
์ง์ URL์ ์ ๋ ฅํ์ ๋ 404 ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ด์ ๋ Vue Router์ ๊ฐ์ ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ๋ ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)์์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ํน์ ๊ฒฝ๋ก๋ก ์์ฒญ์ ๋ณด๋ผ ๋ ์๋ฒ๊ฐ ๊ทธ ๊ฒฝ๋ก์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋๋ก ์ค์ ๋์ด ์์ง ์์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฌธ์ ์ ์์ธ
- ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๋ผ์ฐํ ์ฐจ์ด: Vue Router๋ ํด๋ผ์ด์ธํธ ์ธก์์ ๋ผ์ฐํ ์ ์ฒ๋ฆฌํ. ์ฌ์ฉ์๊ฐ /order/complete์ ๊ฐ์ ๊ฒฝ๋ก๋ก ์ด๋ํ ๋, Vue Router๋ ์ด ๊ฒฝ๋ก๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ ์ ํ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋ค.
- ์๋ฒ์ ๊ธฐ๋ณธ ๋์: ์๋ฒ(Nginx)๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฒญ๋ ๊ฒฝ๋ก์ ํด๋นํ๋ ํ์ผ์ ์ฐพ๋๋ค. ์๋ฅผ ๋ค์ด, /order/complete ๊ฒฝ๋ก์ ๋ํด ์๋ฒ๋ /var/www/html/order/complete ํ์ผ์ ์ฐพ์ผ๋ ค ํ์ง๋ง, ํด๋น ํ์ผ์ด ์กด์ฌํ์ง ์์ผ๋ฉด 404 ์ค๋ฅ๋ฅผ ๋ฐํํ๋ค.
- SPA์ ๋ผ์ฐํ ์ฒ๋ฆฌ: SPA์์๋ ๋ชจ๋ ๊ฒฝ๋ก ์์ฒญ์ ๋จ์ผ ์ง์ ์ ํ์ผ์ธ index.html๋ก ๋ฆฌ๋๋ ์ ํ์ฌ ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ฐํฐ๊ฐ ๊ฒฝ๋ก๋ฅผ ์ฒ๋ฆฌํ๋๋ก ํด์ผ ํ๋ค.
Nginx ์ค์ ์์ try_files ์ง์์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ๋ ๊ฒฝ๋ก์ ํ์ผ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ, index.html ํ์ผ๋ก ๋ฆฌ๋๋ ์ ํ๋๋ก ์ค์ ํจ์ผ๋ก์จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๊ฐ ํน์ URL๋ก ์ง์ ์ ๊ทผํ ๋๋ ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ฐํฐ๊ฐ ๊ฒฝ๋ก๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋๋ค.