首页 > 其他分享 >前后端分离实践

前后端分离实践

时间:2024-02-26 17:25:16浏览次数:32  
标签:分离 log Nginx 前后 实践 nginx html conf 80

背景介绍

原本前后端代码是分别独立的,在代码仓库里是两个仓库,但不知之前的开发人员出于何种考虑,在项目部署时,又将前端代码合并到了后端

 

前后端分离步骤

总体思想

前端打包后上传至Nginx服务器,后端打包后使用Docker容器部署

安装Nginx容器

目录结构

docker-compose.yml文件

version: '3'
services:
  nginx:
    restart: always
    container_name: nginx
    image: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      # 此目录一定要挂载!
      - /data/nginx/html:/usr/share/nginx/html
      # - /usr/local/nginx/www:/var/www
      - /data/nginx/logs:/var/log/nginx
      # 有可能会出现不能挂载,这个时候用手动拷贝配置文件就行
      - /data/nginx/nginx.conf/:/etc/nginx/nginx.conf
      - /data/nginx/etc/cert:/etc/nginx/cert
      - /data/nginx/conf.d:/etc/nginx/conf.d
    environment:
      - NGINX_PORT=80
      - TZ=Asia/Shanghai
    privileged: true

nginx.conf

#user  nginx;
user  root;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    # 注意要添加这一行
    include /etc/nginx/conf.d/*.conf;
}

default.conf

server{
       listen 80;
       server_name localhost;
       charset utf-8;
       
       location / {
          # 此处一定要改成nginx容器中的目录地址,宿主机上的地址容器访问不到
          # 命令必须用 root, 不能用 alias
          root   /usr/share/nginx/html/dist;
         # try_files $uri $uri/ =404;
          index  index.html index.htm;
       }

       #error_page  404              /404.html;

       # redirect server error pages to the static page /50x.html
       #
       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
           root   html;
       }
    }

注一

使用Nginx 容器时,想查看Nginx的日志应该查看对应的挂载目录,而不是使用docker logs命令

注二

表示前端的每一个请求路径都需要一个前缀/resource,区别于后端请求路径

资源路径为/zgbj/resource目录下

上传前端文件

目标路径

/data/nginx/html

注:实际运行时,Nginx读取的是容器内的文件,即存储在/usr/share/nginx/html目录下的文件,所以这个目录一定要挂载!!!

浏览器路径解析

当我们在浏览器中输入http:localhost:80后,该请求会被Nginx容器拦截,然后分发至/usr/share/nginx/html/dist/index.html,即项目首页

修改前端请求后端接口端口号

原本前后端合并打包时,前端访问后端接口的端口号为80,分离后,后端服务端口为8080,故将80改为8080;具体修改需结合实际情况

 

遇到的问题

上传前端文件后,浏览器显示403,Nginx日志如下显示

directory index of "/usr/share/nginx/html/" is forbidden

 

参考文章

【1】docker-compose 安装部署 Nginx

标签:分离,log,Nginx,前后,实践,nginx,html,conf,80
From: https://www.cnblogs.com/ReturnOfTheKing/p/18034697

相关文章

  • 动手实践丨轻量级目标检测与分割算法开发和部署(RK3568)
    本文分享自华为云社区《自动驾驶(AIOT)-轻量级目标检测与分割算法开发和部署(RK3568)【玩转华为云】》,作者:HouYanSong。本文将在ModelArts平台上开发轻量级目标检测与分割算法,并使用ModelBox框架在RK3568开发板上实现模型推理和部署。数据准备我们收集了一份200张由Labelme......
  • 代码工程结构最佳实践(面向微服务)
    术语解释:模块(Module):代码工程里面划分为多个小的、独立的子项目,子项目面向特定的功能场景,子项目之间可以相互关联。例如Maven工程(Project)可以被组织为多个模块(Module),此外每个模块都拥有自己的pom.xml文件包(Package):包是一种组织类的方式,包的主要目的是防止命名冲突,并提供一种将......
  • 云计算 - 以阿里云为例,企业上云策略全览与最佳实践
    云采用框架(CloudAdoptionFramework,简称CAF)为企业上云提供策略和技术的指导原则和最佳实践,帮助企业上好云、用好云、管好云,并成功实现业务目标。本云采用框架是基于服务大量企业客户的经验总结,将企业云采用分为四个阶段,并详细探讨企业应在每个阶段采取的业务和技术策略;同时,还提......
  • 青团社:亿级灵活用工平台的云原生架构实践
    作者:杨磊青团社是国内领先的一站式灵活用工招聘服务企业,灵活用工行业的Top1。青团社于2013年在杭州成立,业务已经覆盖全国,在行业深耕10 年。我的分享将分为以下三部分:青团社架构演进的历程青团社如何实现云原生总结与展望云原生架构的演进历程2020 年,我们的技术架构......
  • 寒假学习 15 Spark机器学习库MLlib编程实践
    1.针对数据导入,提前导入必要的包,如下所示 2.将数据集转换为DataFrameimport spark.implicits._case class Adult(features: org.apache.spark.ml.linalg.Vector, label: String)val df = sc.textFile("/export/server/spark-3.0.0-bin-hadoop3.2/adult.data.txt")......
  • Linux离线部署SpringBoot前后端分离项目
    本文介绍了在内网下的纯离线环境中部署SpringBoot前后端分离项目,由于是个前端仔,并未接触过linux,在经历诸多错误和踩坑之后,终于部署成功(大哭),在此记录一下。工具选择选择合适的工具进行远程连接,如Xshell、Xftp、putty、Terminus等Xshell:连接远程服务器的命令终端Xftp:连接远......
  • 全能代码生成器,自动生成前后端代码、生成项目框架、生成JavaBean、生成数据库文档、自
    TableGo_20240224v8.4.0正式版发布,此次版本累计更新如下: 1、TableGo专属LOGO上线 2、生成数据库文档ER图新增备注+字段名的生成配置 3、生成自定义文件功能新增临时参数配置,用于使用临时数据生成自定义文件 4、新增基于Excel数据生成自定义文件,可导入Excel数据生成程序代码......
  • 猜字谜|构建生成式 AI 应用实践(一)
    在2023亚马逊云科技re:Invent之后,细心的开发者们也许已经发现有一个很有趣的动手实验:开发一款可部署的基于大语言模型的字谜游戏:该款游戏使用了文生图模型为玩家提供一个未知的提示词,玩家需要根据模型生成的图像来猜测该提示词,来完成游戏。该动手实验完整地展示了如何在亚马......
  • grpc python 实践
    目录前言项目结构依赖安装简单Demo接口定义编译proto服务端的实现客户端的实现进阶Demo接口定义服务端的实现客户端的实现使用HTTP作为中介服务端的实现客户端的实现原文链接:1.使用Python实现gRPC通信前言本文主要讲述如何使用Python实现gRPC通信,并通过三个例子,由浅入深地进行......
  • 六、多文件分离式编译
    六、多文件分离式编译分离式编译意味着将项目程序分离到几个文件当中,每个文件独立编译,通常用于C++项目当中。1.文件组织结构下面以一个阶乘示例来说明,一个文件夹下面共有3个文件,分别是主文件,被调用的函数所在文件和头文件:fact.cpp是被调用的子函数所在文件:#include"Chapter......