Nginx(三)vue和springboot项目分开部署实战

本文涉及的产品
.cn 域名,1个 12个月
简介: Nginx(三)vue和springboot项目分开部署实战

一、简介



Nginx 动静分离:简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和 静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面。动静分离从目前实现角度来讲大致分为以下两种:


  1. 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案。
  2. 另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。


Nginx动静分离


二、环境准备



1. vue项目准备


  1. 修改http.js的后端访问域名
//接口域名
export const http_ori = process.env.NODE_ENV === 'production' ? '' : 'http://192.168.43.243:8080'


  1. 打包(vscode)
cnpm run build


2. Springboot项目准备


  1. 将项目打包成war包
  2. 将ROOT.war上传到tomcat容器所对应的容器数据卷中
  3. 重启tomcatdocker restart tomcat


3. Nginx配置文件配置


  1. 创建nginx实例
[root@localhost ~]# docker run -d -p 81:80 --name nginx1 -v /opt/infosec/nginx1/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/infosec/nginx1/static:/etc/nginx/static nginx


  1. 将nginx配置文件上传并覆盖/opt/infosec/nginx1/conf/nginx.conf
  2. /opt/infosec/nginx1/static创建web文件夹,将vue打包目录dist文件下的所有文件上传到web目录
  3. 修改nginx.conf配置文件


http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    # 1. 可以通过配置upstream多个后端服务,实现一个前端对应多个后端服务
 upstream javacfox.com {。
  server 192.168.43.243:8080;
  #server 192.168.43.243:8081;
 }
    server {
        # 2. 配置监听端口
        listen       80;
        # 3. 配置域名
        server_name  192.168.43.243;
        # 4. 配置vue项目静态文件访问地址
     location / {
            root   /etc/nginx/static/web; # 对应主机容器数据卷web
            index  index.html index.htm;
        }
        # 5. 配置后端springboot项目负载均衡和反向代理
     location /api {
            root   html;
            proxy_pass http://javacfox.com;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
  1. 重启nginxdocker restart nginx


三、测试



1. 访问静态页面



静态页面访问


2. 通过页面访问后端接口


访问后端接口


总结:从测试结果可以看出,该方法已经实现了前后端分离部署,并且可以同时配置多个后端服务器,实现了静态资源和动态资源的分离。


注意:一个server可以对应多个location,location的匹配机制和顺序都是有规则的,/api:我后端所有接口都以/api开头,所以可以用来做区分匹配;/:全匹配,当所有location都匹配不上才会进入/对应的匹配中来。


目录
相关文章
|
1月前
|
JavaScript 容器
乾坤qiankun框架搭建 主应用为vue3的项目。
乾坤qiankun框架搭建 主应用为vue3的项目。
158 2
|
1月前
|
缓存 负载均衡 安全
Nginx常用基本配置总结:从入门到实战的全方位指南
Nginx常用基本配置总结:从入门到实战的全方位指南
262 0
|
27天前
|
数据采集 监控 JavaScript
在 Vue 项目中使用预渲染技术
【10月更文挑战第23天】在 Vue 项目中使用预渲染技术是提升 SEO 效果的有效途径之一。通过选择合适的预渲染工具,正确配置和运行预渲染操作,结合其他 SEO 策略,可以实现更好的搜索引擎优化效果。同时,需要不断地监控和优化预渲染效果,以适应不断变化的搜索引擎环境和用户需求。
|
13天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
22天前
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
62 1
SpringBoot获取项目文件的绝对路径和相对路径
|
12天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
25 2
|
17天前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
36 8
|
24天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
42 2
|
24天前
|
前端开发 Java Spring
SpringBoot项目thymeleaf页面支持词条国际化切换
SpringBoot项目thymeleaf页面支持词条国际化切换
53 2
|
24天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
35 1
下一篇
无影云桌面