Nginx部署特殊Path
设置Vite
主要设置内容base:"/xxx/"
以及
build: {
outDir: path.resolve(__dirname, "dist/xxx"),
emptyOutDir: true,
},
const { defineConfig, loadEnv } = require("vite");
const path = require("path");
const fs = require("fs");
const { createVitePlugins } = require("./vite/plugins");
// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {
const env = loadEnv(mode, process.cwd());
const { VITE_ROUTE_BASE } = env;
if (command == "build") {
//打包时生成版本号
let version = {
version: JSON.stringify(new Date().getTime()),
};
fs.writeFile("./public/version.json", JSON.stringify(version), () => {
console.log("新版本号生成成功", version);
});
}
return {
base: "/xxx/",
plugins: createVitePlugins(env, command === "build"),
resolve: {
alias: {
// 设置路径
"~": path.resolve(__dirname, "./"),
// 设置别名
"@": path.resolve(__dirname, "./src"),
},
extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
},
build: {
outDir: path.resolve(__dirname, "dist/xxx"),
emptyOutDir: true,
},
// vite 相关配置
server: {
port: 3251,
host: true,
open: true,
proxy: {
"/dev-api": {
target: "http://baidu",
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, ""),
},
},
},
css: {
postcss: {
plugins: [
{
postcssPlugin: "internal:charset-removal",
AtRule: {
charset: (atRule) => {
if (atRule.name === "charset") {
atRule.remove();
}
},
},
},
],
},
},
};
});
设置router
主要设置 history: createWebHistory("/xxx/")
export const createRouter = () => {
return createRouterOrigin({
history: createWebHistory("/xxx/"),
routes: reRoutes,
});
};
设置site nginx
主要设置try_files $uri /xxx/index.html;
gzip on;
gzip_comp_level 6;
gzip_types text/css application/javascript;
server {
listen 80;
root /usr/share/nginx/html;
server_tokens off;
location /favicon.ico {
expires 1d;
root /usr/share/nginx/html;
}
# html5 mode
location / {
expires -1;
try_files $uri /xxx/index.html;
# add_header Cache-Control;
# add_header Access-Control-Allow-Origin *;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
sub_filter '__PROJECT_VERSION__' '$PROJECT_VERSION';
sub_filter '__ENV__' '$ENV';
sub_filter '__APP_CONFIG__' '$APP_CONFIG_BASE64';
sub_filter_once on;
}
}