前后端分离项目在Linux的部署方法、一台Nginx如何部署多个Web应用

需求场景:目前有三个前后端分离项目(vue+springboot),Linux服务器一台,nginx一个,比如服务器地址为www.xxxxxxx.com  我想通过80端口访问服务①(即访问www.xxxxxxx.com);通过81端口访问服务②(即www.xxxxxxx.com:81);通过82端口访问服务③(即www.xxxxxxx.com:82)

 ①部署后端服务

Linux中找到一个地方,将打包好的后端jar放入其中,然后再创建一个存放控制台输出的日志文件(名字随意)

之后,切换到此文件夹,运行让jar在后台启动的指令

[root@iZbp1h09ipy0b1t88cquonZ ~]# cd /usr/local/javajar
[root@iZbp1h09ipy0b1t88cquonZ javajar]# nohup java -jar scbz_demo-0.0.1-SNAPSHOT.jar > scbz_demo.log &

指令解析:nohup java -jar jar包的名字 > 指定输出的日志文件 &

                nohup 表示让它后台启动,ctrl + c 后仍然也可以启动

如果想结束这个服务可以直接杀死这个进程:

[root@iZbp1h09ipy0b1t88cquonZ javajar]# ps -ef|grep java
root      546760       1  0 11月15 ?      00:00:34 java -jar scbz_demo-0.0.1-SNAPSHOT.jar
root      635284       1  0 11月15 ?      00:00:53 java -jar studentOrganizationRecruitSystem-0.0.1-SNAPSHOT.jar
root      747441  739287  0 14:52 pts/1    00:00:00 grep --color=auto java
[root@iZbp1h09ipy0b1t88cquonZ javajar]# kill -9 546760

②打包前端项目

使用 npm run build 将前端项目打包,然后放到nginx的静态目录中

③修改nginx配置(最重要)

首先,常用几个指令

#检查配置文件正确性
nginx -t#启动nginx
nginx#关闭nginx
nginx -s stop#重新加载配置文件
nginx -s reload#查看nginx进程
ps -ef|grep nginx#杀死进程
kill -9 xxxxxxxx

先来看server这项配置

	# 一个server代表一个服务server {# 这个服务映射到的端口listen       82;# 服务名称server_name  localhost;# 这个服务所对应的页面文件地址location / {root   html/dist;index  index.html index.htm;}# 这也是解决刷新页面之后404问题location @router {rewrite ^.*$ /index.html last; }# 将这个服务的所有以 /szbz/**  开头的接口,全都转发到proxy_pass这个地址去,而8889即为这个服务所对应的后端服务端口,其余配置均不需要改动location /scbz/ {add_header Access-Control-Allow-Origin * always;proxy_pass http://47.66.xxx.xx:8889;         proxy_connect_timeout    6;proxy_send_timeout        30;proxy_read_timeout        30;            proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size    100m;        }error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

修改后的配置文件:


user  root;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}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;# 生辰八字server {listen       82;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html/dist;index  index.html index.htm;}# 这也是解决刷新页面之后404问题location @router {rewrite ^.*$ /index.html last; }location /scbz/ {add_header Access-Control-Allow-Origin * always;proxy_pass http://47.66.xxx.xx:8889;         proxy_connect_timeout    6;proxy_send_timeout        30;proxy_read_timeout        30;            proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size    100m;        }error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}# 招聘门户server {listen       80;server_name  recruit_portal;location / {root   html/portal;index  index.html index.htm;}# 这也是解决刷新页面之后404问题location @router {rewrite ^.*$ /index.html last; }location /protal {add_header Access-Control-Allow-Origin * always;proxy_pass http://47.66.xxx.xx:8000/protal;proxy_set_header X-NginX-Proxy true;proxy_set_header X-Real-IP  $remote_addr;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   }error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}# 招聘管理server {listen       81;server_name  recruit;location / {root   html/recruit;index  index.html index.htm;}# 这也是解决刷新页面之后404问题location @router {rewrite ^.*$ /index.html last; }location /prod-api {add_header Access-Control-Allow-Origin * always;proxy_pass http://47.66.xxx.xx:8000;       proxy_connect_timeout    6;proxy_send_timeout        30;proxy_read_timeout        30;            proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size    100m;# 路径重写rewrite ^/prod-api(.*) $1 break;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}}

82端口,将所有的 /scbz/**   的接口都代理到proxy_pass进行处理

80端口,将所有的 /prod-api/protal/**  的接口都代理到proxy_pass进行处理

81端口,将所有 /prod-api/**  的接口,先经过路径重写后,再代理到proxy_pass进行处理

location /protal {add_header Access-Control-Allow-Origin * always;  # 设置响应头,允许跨域请求proxy_pass http://47.66.xxx.xx:8000/protal;  # 将请求转发到指定的后端服务器proxy_set_header X-NginX-Proxy true;  # 设置请求头,表明经过Nginx代理proxy_set_header X-Real-IP  $remote_addr;  # 设置请求头,传递客户端真实IP地址proxy_set_header X-Forwarded-Host $host;  # 设置请求头,传递原始请求中的Host头proxy_set_header X-Forwarded-Server $host;  # 设置请求头,传递原始请求中的Server头proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 设置请求头,传递原始请求中的客户端IP地址proxy_connect_timeout 6;  # 设置与后端服务器建立连接的超时时间proxy_send_timeout 30;  # 设置向后端服务器发送请求的超时时间proxy_read_timeout 30;  # 设置从后端服务器读取响应的超时时间client_max_body_size 100m;  # 设置客户端请求的最大请求体大小为100MB
}

使用 Nginx 进行路径重写时,rewrite 指令用于匹配和修改请求的路径。

让我们逐个解释 rewrite ^/your-prefix(.*) $1 break; 中的每个部分的含义:
        rewrite:这是 Nginx 的指令,用于执行路径重写操作。
        ^/your-prefix(.*):这是一个正则表达式,用于匹配以 /your-prefix 开头的路径。^ 表示匹配路径的开头,/your-prefix 是你要替换的请求前缀,(.*) 表示匹配任意字符的零个或多个实例,并且将其捕获到一个变量中。
        $1:这是一个变量,用于引用正则表达式中捕获的内容。在这里,$1 引用了 (.*) 中捕获的路径的剩余部分。
        break:这是 rewrite 指令的标志,表示停止执行后续的重写规则。

其中,html文件除了指定在ngingx下的资源文件外,还可以指定全路径

更多nginx的安装,以及配置文件的详情解析,可移步到:

Linux安装Nginx,及Nginx详解,使用_安装nignix_Wmenghu的博客-CSDN博客文章浏览阅读603次。安装之前先安装一些依赖包去官网下载一个版本Nginx把我下载的是 nginx-1.16.1.tar.gz 先把它上传到Linux中去,上传到一个自己知道的文件夹,然后进入这个文件夹,进行解压这个命令可以解压到当前文件,然后在 /usr/local 下面建一个文件夹叫 nginx 等下就安装到这个文件夹中去。先cd 进入到刚刚nginx-1.16.1.tar.gz安装包解压的路径里去,再执行然后执行进行编译和安装这时候就安装好了,进入刚刚的安装目录去看一下目录结构conf..._安装nignixhttps://blog.csdn.net/w13966597931/article/details/126236809?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170012063616800197075154%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170012063616800197075154&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-126236809-null-null.nonecase&utm_term=nginx&spm=1018.2226.3001.4450

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/186017.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 数独小游戏 经典数独·休闲益智

一款经典数独训练app 标题资源下载 (0积分)https://download.csdn.net/download/qq_38355313/88544810 首页页面: 1.包含有简单、普通、困难、大师四种难度的数独挑战供选择; 记录页面: 1.记录用户训练过的数独信息&…

容性负载箱与电容器的关系是什么?

容性负载箱用于测试电容器性能的设备,电容器是储存电能的元件,具有储存和释放电荷的能力。容性负载箱通过对电容器施加不同的负载,可以测量电容器的容量、电压响应、损耗等参数。 容性负载箱与电容器的关系主要体现在以下几个方面&#xff1a…

OpenCV入门5——OpenCV的算术与位运算

文章目录 图像的加法运算图像的减法运算图像的乘除运算图像的融合OpenCV位运算-非操作OpenCV位操作-与运算OpenCV位操作-或与异或为图像添加水印 图像的加法运算 # -*- coding: utf-8 -*- import cv2 import numpy as npimg cv2.imread(E://pic//4.jpg)# 图的加法运算就是矩阵…

监控直流防雷浪涌保护器综合方案

监控系统是一种广泛应用于安防、交通、工业、军事等领域的信息系统,它通过摄像机、传输线路、监控中心等设备,实现对目标区域的实时监视和控制。然而,监控系统也面临着雷电的威胁,雷电可能通过直击雷、感应雷、雷电波侵入等途径&a…

苹果电脑杀毒软件cleanmymac2024

苹果电脑怎么杀毒?这个问题自从苹果电脑变得越来越普及,苹果电脑的安全性问题也逐渐成为我们关注的焦点。虽然苹果电脑的安全性相对较高,但仍然存在着一些潜在的威胁,比如流氓软件窥探隐私和恶意软件等。那么,苹果电脑…

系列三、GC垃圾回收【总体概览】

一、GC垃圾回收【总体概览】 JVM进行GC时,并非每次都对上面的三个内存区域(新生区、养老区、元空间/永久代)一起回收,大部分回收的是新生区里边的垃圾,因此GC按照回收的区域又分为了两种类型,一种是发生在新…

怎么去掉邮件内容中的回车符

上图是Outlook 截图,可见1指向的总有回车符; 故障原因: 不小心误按了箭头4这个选项; 解决方法: 点击2箭头确保tab展开; 点击3以找到箭头4. 取消勾选或者多次点击,即可解决。

React实战演练项⽬一需求分析及vite_react搭建项目

React实战演练项⽬一需求分析及项目初始化 需求分析 刚学完React,开始找项目进行上手练习! 页面组件拆分: 头部:导航tab、搜索框、登录注册 中间:分类导航、轮播图、新人福利、高单价产品导航 课程分类列表、底部内容、登陆提…

这么好看的马面裙 ,女儿穿上不要太美了

红色小翻领,上身米白色金貂绒面料精细顺滑非常有质感 另外还有全手工定制的盘口裙子用的是仿宋代宋锦的织金面料 制作工艺非常复杂很重工的一件衣服 出门保证会被夸!!

comfyui指北-1

https://colab.research.google.com/github/tieai/SDXL-ComfyUI-Colab/blob/main/SDXL_OneClick_ComfyUI.ipynb#scrollToSaAJk33ppFw1https://colab.research.google.com/github/tieai/SDXL-ComfyUI-Colab/blob/main/SDXL_OneClick_ComfyUI.ipynb#scrollToSaAJk33ppFw1 可以用上…

Python大数据学习问题整理汇总

day01 分区表与分桶表的区别 在这里插入代码片day02 数据仓分层/与本质 数据仓库(OLAP)的本质叫联机分析处理, 一般针对某些主题的历史数据进行分析 主要面向分析,支持管理决策。源数据层(ODS): 此层数据无任何更改,直接沿用外围…

【linux】查看CPU的使用率

命令1:top top 总体系统信息 uptime:系统的运行时间和平均负载。tasks:当前运行的进程和线程数目。CPU:总体 CPU 使用率和各个核心的使用情况。内存(Memory):总体内存使用情况、可用内存和缓存…