Nginxλ‘ Vite νλ‘μ νΈ λ°°ν¬νκΈ°
Q. νλ‘ νΈμλ μ ν리μΌμ΄μ μ μ΄λ»κ² λ°°ν¬λ₯Ό ν΄μΌν κΉ?
μ€λμ λΆν° κΈ°λ³Έμ μΌλ‘λ λ°±μλ μ ν리μΌμ΄μ μμ νλ‘ νΈ UI ꡬμ±μ μν μμ λ€μ κ΄λ¦¬νκ³ ν¨κ» λΉλλμ΄ λ°°ν¬λλ λ°©μμ μ·¨ν΄μλ€. κ·Έλ¬λ, λ°±μλ κ°λ°μμ νλ‘ νΈμλ κ°λ°μλ‘ λλμ΄μ§λλ νλμ μλΉμ€λ₯Ό ꡬμ±νλ νλ‘ νΈμλ μ ν리μΌμ΄μ κ³Ό λ°±μλ μ ν리μΌμ΄μ μ΄ λλμ΄μ§κ³ κ° μ ν리μΌμ΄μ μ κ°λ°ν μ μλ νκ²½μ΄ λ§λ€μ΄μ§κ³ μλ€. λ³΄ν΅ λ°±μλ μ ν리μΌμ΄μ μ λΉλνλ©΄μ UI μμ νμΌλ€μ ν¬ν¨νλ―λ‘ λ°°ν¬ κ³Όμ μ λ°±μλ κ°λ°μκ° λ΄λΉνλ μ‘°μ§μ΄ λ§μμ κ² κ°λ€.
λ§μ½, μ‘°μ§ κ΅¬μ±μΌλ‘ μΈν΄ νλ‘ νΈμλ μ ν리μΌμ΄μ κ°λ°μ μν νλ‘ νΈμλ νμ΄ μλ κ³³μ΄λΌλ©΄ νλ‘ νΈμλ κ°λ°μκ° λ°°ν¬λ₯Ό μ§μ μνν μλ μμ΄λ³΄μΈλ€. νμ¬λ§λ€ μΌνλ λ°©μμ λ€λ₯Ό μ μκΈ° λλ¬Έμ 릴리μ¦μ λν λΆλΆμ QA μμ§λμ΄κ° λ΄λΉνκΈ°λ νλ€. μλ¬΄νΌ Vite κΈ°λ° νλ‘μ νΈλ₯Ό λ°°ν¬νλ λ°©μμ λν΄μ μ 리ν΄λ³΄μ.
Deploying a Static Site
It is important to note that vite preview is intended for previewing the build locally and not meant as a production server.
λ‘컬 νκ²½μμ μ μ νμ΄μ§λ₯Ό λ°°ν¬ν μ μλ μΉ μλ²λ₯Ό μ€ννλ preview λͺ λ Ήμ΄λ₯Ό μ 곡νμ§λ§ μμ κ°μ΄ νλ‘λμ νκ²½μ μν λ°°ν¬ μλ²λ μλμ μ£Όμν΄μΌνλ€. κΈ°λ³Έμ μΈ κ°λ μ μ μ λ°°ν¬λ₯Ό μν λΉλ νμΌμ λ§λ€κ³ λμ λ°±μλ μλ² λλ μΉ μλ²λ₯Ό ν΅ν΄ μ μ νμΌμ λν μλ΅μ μ²λ¦¬νλ κ²μ΄λ€.
λλ²μ§Έ λ°©μμ μΌλ°μ μΌλ‘ λ§μ΄ μ¬μ©λλ νΈμΌλ‘ λ°±μλ μλ²κ° μ€νλ§ λΆνΈ νλ‘μ νΈλΌλ©΄ μ μ 리μμ€ κ²½λ‘μ ν¬ν¨λ μ μλλ‘ νλ©΄ λλ€. λ°±μλ μ ν리μΌμ΄μ λΉλ μ ν΄λμ€ν¨μ€μ ν¬ν¨λμ΄λ λκ³ μ ν리μΌμ΄μ νλ‘νΌν°λ₯Ό ν΅ν΄ νΉμ νμΌ κ²½λ‘λ₯Ό μ§μ ν΄λ λλ€. λ³Έ κΈμμ μ 리νκ³ μ νλ 건 첫λ²μ§Έ λ°©μμΌλ‘ νλ‘λμ λ°°ν¬λ₯Ό μν μ μ νμΌμ λΉλνκ³ λμ Nginxμ κ°μ μΉμλ²λ₯Ό ν΅ν΄ μ μ νμΌμ λ°°ν¬νλ κ²μ΄λ€.
Nginx μΉμλ²μμ μ μ νμΌμ λ°°ν¬νκ³ λ°±μλ API μμ²μ λν΄μλ 리λ²μ€ νλ‘μ ꡬμ±μ νλ©΄ λλ€. 리λ²μ€ νλ‘μ ꡬμ±μ μ₯μ μ λ°±μλ μ ν리μΌμ΄μ μ ν¬νΈλ₯Ό κ°μΆ μ μκ² λμ΄ μ‘°κΈμ 보μμ μΈ μΈνλΌ κ΅¬μ±μ΄ λ μ μλ€λ κ²μ΄λ€. μ°Έκ³ λ‘ Vite κ°λ° μλ²μμλ νλ‘μ ꡬμ±μ ν μ μκ² μ 곡νλ€.
Nginx μΉμλ²λ‘ Vite μ μ νμΌ λ°°ν¬
vite.config.jsimport { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; // https://vitejs.dev/config/ export default defineConfig({ build: { manifest: true, target: "esnext", }, plugins: [vue()], });
Windows Terminal$ yarn --cwd 'frontend' install $ yarn --cwd 'frontend' run build --mode production vite v4.4.11 building for production...
λΉλ λͺ λ Ήμ΄λ₯Ό μννλ©΄ μλμ κ°μ΄ dist ν΄λ μλμ μ μ νμΌλ€μ΄ μμ±λλ€.
- dist/assets : μ μ μμ λͺ¨μ
- dist/index.html : μ§μ μ (EntryPoint) νμΌ
- manifest.json : 맀λνμ€νΈ νμΌ
μμ±λ μ μ λΉλ νμΌλ€μ nginx.conf μ static ν΄λλ‘ λ체νμ¬ ν
μ€νΈλ₯Ό ν΄λ³΄μ. μ λλ‘ λμνμ§ μμν
λ° Nginxμ μ€μ νμΌμ ꡬμ±μ΄ λ°±μλ μ ν리μΌμ΄μ
μΌλ‘ κΈ°λ³Έμ μΈ μμ²μ μ λ¬νλλ‘ λμ΄μκΈ° λλ¬Έμ΄λ€. /
κ²½λ‘μ λν΄μλ index.htmlμ μλ΅νλλ‘ λ³κ²½ν΄μΌνκ³ λ°±μλμ λν μμ²μ΄ λμ€μ μ λ¬λλλ‘ μμ ν΄μΌνλ€.
nginx-vite.confserver { index index.html; root /etc/nginx/static; try_files $uri /index.html =404; # 리λ²μ€ νλ‘μ location ~ ^/(api|version) { proxy_pass http://backend; proxy_redirect off; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log /var/log/nginx/access.log; } }
κΈ°λ³Έμ μΈ μμ²μ λν΄μλ static ν΄λ κΈ°μ€μΌλ‘ μ μ νμΌμ μ¬μ©ν΄ μλ΅νλ©° /api λ° /version μ λν΄μλ§ λ°±μλ μ ν리μΌμ΄μ μμ²μΌλ‘ μ²λ¦¬λλλ‘ μμ νλ€. μ΄μ μλμ κ°μ΄ λ°λͺ¨ μ ν리μΌμ΄μ μ΄ μ μμ μΌλ‘ 보μ΄λ©° /versionμ λν μμ²μ μ λ¬νλ©΄ λ°±μλ μ ν리μΌμ΄μ μμ ν΄λΉ κ²½λ‘κ° λ§€νλμ§ μμμ μ€νλ§ λΆνΈμ νμ΄νΈλΌλ²¨ νμ΄μ§λ‘ 404 μλ΅μ λ³Ό μ μλ€. νλ‘ νΈ μμ²κ³Ό λ°±μλ μμ²μ ν¨μ¨μ μΌλ‘ ꡬλΆν μ μλ λ°©μμ λ μ°κ΅¬νκ³ μ°Ύμλ³΄κ³ νμ΅ν΄μΌν λΆλΆμ΄λ€.
μ¬μ€ μ λ°±μλ μ ν리μΌμ΄μ
μ νλ‘ νΈμλμ λν μ μ νμΌμ ν¬ν¨μν€λ κ² κ°λ¨νμ§λ§ μ μ νμΌμ λ°°ν¬νλ κ²½λμ μΉ μλ²λ₯Ό λλ κ² λ°±μλ μ ν리μΌμ΄μ
μ λΆνλ₯Ό μ€μΌ μ μλ λ°©μμ΄λ€. μ μ νμΌμ λν μμ²μ μ²λ¦¬νκΈ° μν΄μ μ€λ λ νμμ μ€λ λλ₯Ό μ¬μ©νλ κ²μ μκ°λ³΄λ€ μν₯μ΄ ν΄ μλ μλ€. μ νμ μ¬λ¬λΆμ λͺ«μ΄λ€.