nginx
1、安装nginx
2、到nginx的安装目录下使用 start nginx
启动nginx服务
3、nginx的主配置文件在/conf/nginx.conf
4、修改vue项目里的vue.config.js
的配置文件
- 添加publicPath选项,根据你需要部署的路径来进行设置。
// 值根据你所需要部署的项目路径来,如果是根目录,只需要修改成/即可
module.exports = {
publicPath: '/testWeb/'
}
5、打包部署文件 npm
6、将打包部署后的文件放在nginx/html目录下
7、修改nginx的配置文件
// 同一个端口部两套vue项目,通过根路径区分
// 第一套项目,publicPath:'/'
location / {
root html/dist; // 指向vue目录
index index.html index.htm; // index指向 html/dist/index文件
try_files $uri $uri/ /index.html;
}
// 第二套项目,publicPath: '/testWeb/'
location /testWeb { // 这里的testWeb与4中所配置的路径一致
alias html/testWeb;// 指向vue目录
index index.html index.html;// index指向html/testWeb/index.html文件
try_files $uri $uri/ /testWeb/index.html; // 当找不到文件的时候,就会重定向到这个文件下
}
-
try_files
是用来解决vue项目在nginx部署,刷新404的问题(因为文件路径并非真实存在的,需要重定向到页面里)
try_files:当用户请求 http://localhost/example 时,这里的 root/example (其中 uri/,增加了一个 /,也就是看有没有名为 /$root/example/ 的目录。
又找不到,就会 fall back 到 try_files 的最后一个选项 /index.html,发起一个内部 “子请求”,也就是相当于 nginx 发起一个 HTTP 请求到 http://localhost/index.html。
8、测试配置文件nginx -t
9、重启,载入新的配置文件nginx -s reload
10、此时打开localhost/testWeb就能看到页面了
tip
-
root
和alias的
区别:
root
的处理结果是:root
路径+location
路径
alias
的处理结果是:使用alias
路径替换location
路径
举个例子:
server {
listen 8081;
server_name localhost;
location /test {
root html; // 此时访问localhost:8081/test 相当于访问 html/test/index.html
index index.html index.htm;
}
location /test {
alias html/; // 此时访问localhost:8081/test 相当于访问 html/index.html
index index.html index.htm;
}
location /test {
alias html/test/; // 此时访问localhost:8081/test 相当于访问 html/test/index.html
index index.html index.htm;
}
}