Vite項目Nginx子路徑部署全攻略
你是否曾遇到Vite項目部署到Nginx子路徑后頁面空白、資源加載失敗或路由刷新404的問題?本文將通過3步配置法+故障排除指南,徹底解決這些痛點。讀完你將掌握:
- Vite配置文件的關鍵參數(shù)設置
- Nginx服務器的精確路由規(guī)則
- 靜態(tài)資源路徑的自動適配方案
- 404錯誤的終極解決辦法
1. Vite項目配置(核心步驟)
1.1 設置base路徑
打開項目根目錄的vite.config.js文件,添加base配置項指定子路徑名稱:
export default defineConfig({
base: '/vite-app/', // 子路徑名稱,必須以/開頭和結(jié)尾
// 其他配置...
})?? 注意:base值必須與Nginx配置中的location路徑完全一致。例如Nginx配置/app/,則此處必須設為/app/。
1.2 構(gòu)建生產(chǎn)版本
執(zhí)行構(gòu)建命令生成優(yōu)化后的靜態(tài)文件:
npm run build # 構(gòu)建產(chǎn)物默認輸出到dist目錄
構(gòu)建完成后,檢查dist/index.html文件,確認所有資源引用路徑已自動加上/vite-app/前綴。
2. Nginx服務器配置
2.1 基礎配置模板
在Nginx配置文件(通常位于/etc/nginx/conf.d/目錄)中添加以下配置:
server {
listen 80;
server_name yourdomain.com; # 替換為你的域名
# 子路徑部署核心配置
location /vite-app/ {
alias /path/to/your/vite/dist/; # 替換為實際dist目錄絕對路徑
try_files $uri $uri/ /vite-app/index.html; # 解決SPA路由刷新404問題
# 緩存控制 - 靜態(tài)資源長期緩存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000";
}
}
}
2.2 配置說明
| 參數(shù) | 作用 | 示例值 |
|---|---|---|
| location /vite-app/ | 匹配子路徑請求 | /admin/或/portal/ |
| alias | 指定靜態(tài)文件目錄 | /var/www/vite-app/dist/ |
| try_files | 實現(xiàn)SPA路由重定向 | $uri $uri/ /vite-app/index.html |
配置完成后,執(zhí)行以下命令使配置生效:
nginx -t # 測試配置是否有誤 systemctl reload nginx # 平滑重啟Nginx
3. 部署驗證與故障排除
3.1 基本訪問測試
在瀏覽器中訪問 http://yourdomain.com/vite-app/,驗證:
- 首頁是否正常加載
- 點擊導航后URL是否顯示為
/vite-app/about格式 - 刷新頁面是否仍能正常顯示
3.2 常見問題解決方案
問題1:靜態(tài)資源404錯誤
原因:Vite構(gòu)建的資源路徑與Nginx配置不匹配
解決:檢查vite.config.js中的base值是否與Nginx的location路徑完全一致
問題2:路由刷新后404
原因:Nginx未配置SPA路由重定向
解決:確保try_files指令正確設置為 $uri $uri/ /vite-app/index.html
問題3:CSS/JS加載跨域
原因:Nginx未正確配置CORS頭
解決:在location塊中添加:
add_header Access-Control-Allow-Origin *;
4. 高級優(yōu)化配置
4.1 啟用Gzip壓縮
在Nginx配置中添加壓縮配置,減少傳輸體積:
gzip on; gzip_types text/css application/javascript image/svg+xml; gzip_min_length 1k; gzip_comp_level 6;
4.2 配置HTTPS(推薦)
通過Let's Encrypt獲取免費SSL證書后,配置HTTPS:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# 其他SSL配置...
location /vite-app/ {
# 同上配置...
}
}
5. 部署架構(gòu)參考
下圖展示了Vite項目在Nginx子路徑部署的完整架構(gòu):

總結(jié)與最佳實踐
- 配置同步原則:始終保持Vite的
base配置與Nginx的location路徑完全一致 - 構(gòu)建驗證:每次修改配置后執(zhí)行
npm run build重新構(gòu)建 - 緩存策略:對靜態(tài)資源設置長期緩存,對HTML設置不緩存
- 版本控制:建議在子路徑中包含版本號,如
/vite-app/v2/,便于多版本共存
官方文檔:docs/guide/static-deploy.md
配置示例:playground/backend-integration/vite.config.js
通過以上步驟,你的Vite項目將在Nginx子路徑環(huán)境中穩(wěn)定運行,同時具備優(yōu)秀的性能和可維護性。
到此這篇關于Vite項目Nginx子路徑部署全攻略的文章就介紹到這了,更多相關Vite Nginx子路徑部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
手寫實現(xiàn)vue2下拉菜單dropdown組件實例
這篇文章主要為大家介紹了手寫vue2下拉菜單dropdown組件實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08
vuex如何在非組件中調(diào)用mutations方法
這篇文章主要介紹了vuex如何在非組件中調(diào)用mutations方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
VUE-Table上綁定Input通過render實現(xiàn)雙向綁定數(shù)據(jù)的示例
今天小編就為大家分享一篇VUE-Table上綁定Input通過render實現(xiàn)雙向綁定數(shù)據(jù)的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

