Thinkjs 做爲奇舞團開源的nodejs mvc框架之一,引發了不少NodeJS程序員的親賴。可是其關於靜態文件處理部分支持不夠完善,主要是體如今SPA單頁應用,以前在ThinkJS 2.*版本時寫過一個關於處理單頁應用靜態資源的middleware think-resource-spa,可是這個只是建議在開發調試環境中使用,並非解決方案。html
通常做爲線上服務,都會使用Nginx做爲靜態服務資源代理,而後ThinkJS官網的nginx默認配置只是普通代理,因此在官方羣裏就常常有人聞到,前端用ng2或vue怎麼配nginx等問題。前端
因此這裏我將對修改後的配置文件分享給你們。vue
1 server { 2 listen 80; 3 server_name **.com www.***.com; 4 root /your/server/path/of/www; 5 set $node_port 9000; 6 7 location / { 8 proxy_http_version 1.1; 9 proxy_set_header X-Real-IP $remote_addr; 10 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 11 proxy_set_header Host $http_host; 12 proxy_set_header X-NginX-Proxy true; 13 proxy_set_header Upgrade $http_upgrade; 14 proxy_set_header Connection "upgrade"; 15 proxy_pass http://127.0.0.1:$node_port$request_uri; 16 proxy_redirect off; 17 } 18 19 #靜態文件 20 location ~ /static/ { 21 etag on; 22 expires max; 23 } 24 #spa app 主目錄 25 location ~ /oneapp { 26 try_files $uri $uri/ /oneapp/index.html; 27 } 28 }
1. 將全部請求代理到ThinkJS服務node
2. 優先處理static請求nginx
3. 更優先處理oneapp請求程序員
我這裏前端是使用vue2,這裏前端須要配合修改的地方是:vue 配置base href 爲「/oneapp」, 而後打包輸出到www目錄下便可npm