springboot + vue 前后端分离部署
以下为window环境为例
1、下载 nginx,官网:http://nginx.org/en/download.html
2、解压安装包到任意目录 ,并在nginx目录下新建个目录,以存放vue前端工程目录,如图

3、打开前端项目(package.json所在的目录),cmd 黑窗口执行npm run build 编译后产生dist目录

4、将dist目录整个复制到第一个图中nginx\vue下
5、配置nginx,打开 nginx\conf\nginx.conf,找到 server 的配置处,然后按照下面来更改:

方便复制,文字版如下:
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
root "C:/WorkDirectory/soft/nginx/vue/dist";
location / {
#root html;
#index index.html index.htm;
try_files $uri /index.html;
}
#拦截/api/请求,因为所有的请求在前端被处理成 '/api+后端接口'形式
location /api {
#开启重写日志记录,这个会记录在error.log里面,级别为notice
rewrite_log on;
#重写规则,可根据实际情况调整。
rewrite ^.+api/?(.*)$ /$1 break;
include uwsgi_params;
proxy_pass http://localhost:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
add_header Access-Control-Allow-Methods "GET, POST, PUT, OPTIONS";
}
6、配置完成后,启动命令行进入 nginx 目录下输入命令启动nginx:start nginx,访问 http://localhost:80/ 。应该能看到自己的首页。注意:如果要更改nginx的配置,一定在修改前先退出nginx,然后再修改。nginx -s stop 退出nginx. 到此,前端部署完成,接下来到后端。

上图要注意一下,我就是吃了这个亏,怎么也访问不了。
nginx命令
| nginx -s stop | fast shutdown |
| nginx -s quit | graceful shutdown |
| nginx -s reload | changing configuration, starting new worker processes with a new configuration, graceful shutdown of old worker processes |
| nginx -s reopen | re-opening log files |
二、后端部署(采用jar包方式)
1、首先打开后端项目的pom.xml,修改标签里的 war 为 jar。如果没有些标签,默认也是jar,就不用修改了。

2、在后端项目目录执行 mvn install 或通过ide编辑器执行mvn相关命令,我用的是idea,如下图,执行package就可以。最终会产生一个target目录下的jar文件

3 、cd 到 target目录下,cmd窗口中 执行 java -jar xxx-0.0.1-SNAPSHOT.jar (注意名称)
4、测试http://localhost:8080/XXX (xxx为接口请求) 【有人说用http://localhost:8080/api/XXX,按我们的配置不用加api这个路径 】

个人总结 :
nginx代理vue前端解决跨域问题,前端发出的请求基路径都添加了api路径,而nginx对api重写,并转发到代理地址,代理地址就是我们的后端服务处理地址,解决了跨域问题。
前端访问: http://localhost:80/,默认会找到index.html【nginx根据配置的目录找到index.html】,前端发出的任何请求基地址都含有api路径,
,nginx都会将api替换掉并转发到对应的后台请求:

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)