nginx部署vue前端
南江烂柯人 JAVA劝退师

nginx部署vue前端,增加项目访问前缀

通常我们nginx部署前端只需要默认的端口访问如: http://127.0.0.1:8080,
但是有时候多个项目部署在一个地址上,我们需要通过前缀来区分,例如http://127.0.0.1:8080/test1, http://127.0.0.1/test2.
此时就需要非常规配置. 此处我们演示的是docker环境下的nginx配置.docker的nginx配置可以参考nginx部署 ( docker )


无项目前缀, http://127.0.0.1:8080

vue项目的vu.config.js配置, 注意publicPath

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
module.exports = {
publicPath: '/',
assetsDir: 'static',
outputDir: 'dist',
chainWebpack: config => {
config.resolve.alias.set('@', resolve('src'))
},
// 开启调试
configureWebpack: {
// devtool: process.env.NODE_ENV === 'production' ? false : 'source-map',
devtool: 'source-map'
},
devServer: {
open: true, // 自动打开浏览器
host: '0.0.0.0', // 对应的主机名
port: 8080, // 端口号
proxy: {
[process.env.VUE_APP_BASE_API]: {
target: process.env.VUE_APP_URL,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
}
}
}
}
}

nginx的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   listen       8080;
server_name 127.0.0.1;
index index.html index.htm;

location / {
# 此处为挂载目录的指定项目文件夹
root /usr/share/nginx/html/test;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
# 代理后端接口
location /api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 后端接口地址
proxy_pass http://127.0.0.1:9999/;
}


有项目前缀, http://127.0.0.1:8080/test

vue项目的vu.config.js配置, 注意publicPath

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module.exports = {
publicPath: process.env.NODE_ENV === 'production' ? '/test/' : '/',
assetsDir: 'static',
outputDir: 'dist',
chainWebpack: config => {
config.resolve.alias.set('@', resolve('src')).set('api', resolve('service/api'))
},
// 开启调试
configureWebpack: {
// devtool: process.env.NODE_ENV === 'production' ? false : 'source-map',
devtool: 'source-map'
},
devServer: {
open: true, // 自动打开浏览器
host: '0.0.0.0', // 对应的主机名
port: 8080, // 端口号
proxy: {
[process.env.VUE_APP_BASE_API]: {
target: process.env.VUE_APP_URL,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
}
}
}
}
}

router/index.js配置

vue2

1
2
3
4
5
6
const router = new VueRouter({
mode: 'history',
base: process.env.NODE_ENV === 'production' ? '/test/' : '/',
routes,
})

vue3

1
2
3
4
5
const base = process.env.NODE_ENV === 'production' ? '/test/' : '/'
const router = createRouter({
history: createWebHashHistory(base),
routes,
})

nginx配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server {
listen 8080;
server_name 127.0.0.1;
index index.html index.htm;

location / {
root html;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}


location /test {
# 这里要用别名天写项目包路径
alias /usr/share/nginx/html/test/;
# 此处是 前缀/index.html
try_files $uri $uri/ /test/index.html;
index index.html index.htm;
}

location /api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:9999/;
}
}
  • 本文标题:nginx部署vue前端
  • 本文作者:南江烂柯人
  • 创建时间:2023-06-07 15:41:05
  • 本文链接:https://www.mattjia.com/2023/06/07/web/nginx部署vue前端/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论