网站首页 > 技术文章 正文
之前项目没有前后端分离的时候,部署贼简单,直接启动一个应用就可以了。但是如果拆分成前后端分离的项目,那么部署方式可能就变了,毕竟已经有两个项目了,那具体怎么部署呢?毕竟两个项目有可能会有跨域的问题。
部署方案1、单项目部署模式
假设我们前端是vue或者html项目,后端是springboot项目,那么部署的时候直接把前端打包后的静态资源放在springboot项目下的static文件夹下面,当作是静态资源。然后部署的时候就跟不分离模式一样了,只需要启动一个springboot即可。也没有跨域问题。
部署方式2、Nginx+springboot
我们可以把前端项目打包后放在Nginx的资源目录下面,然后配置文件按路径做个代理到springboot来解决跨域问题,配置文件如下.
upstream myServer {
server 100.201.22.93:9991;
}
server {
listen 8010;
location / {
root /home/nginx/web;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location ~* /api/(.*)
{
set $path $1;
proxy_pass http://myServer;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
部署方式3、Nginx+springboot+docker
假设我们的前端不是直接用Nginx,而是另起一个项目,比如用docker或者另一个nginx,那么为了防止跨域问题,我们要做两个代理,如下配置
upstream qd {
#hash $remote_addr consistent;
server 100.33.22.93:9096 max_fails=2 fail_timeout=180s ;
check interval=5000 rise=2 fall=5 timeout=3000 type=http;
check_http_send "GET / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx http_4xx;
}
upstream ht {
#hash $remote_addr consistent;
server 100.33.22.93:9092 max_fails=2 fail_timeout=180s ;
check interval=5000 rise=2 fall=5 timeout=3000 type=http;
check_http_send "GET / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx http_4xx;
}
server {
listen 9092;
underscores_in_headers on;
access_log logs/700-ydkf.access.log;
error_log logs/700-ydkf.errot.log;
location / {
proxy_connect_timeout 2s;
proxy_send_timeout 30m;
proxy_read_timeout 30m;
proxy_pass http://qd;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_set_header Host $host:$server_port;
}
location /api/{
proxy_send_timeout 30m;
proxy_read_timeout 30m;
proxy_pass http://ht;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_set_header Host $host:$server_port;
}
}
注意proxy_pass后面的地址最后加不加/要看你的项目具体部署调用的时候需不需要去掉/api,若不需要则加上,需要则不用加。
感想
都是为了解决跨域问题啊!
- 上一篇: Nginx 部署文档
- 下一篇: 完整版nginx反向代理配置
猜你喜欢
- 2025-01-21 30s 就可以掌握的 Nginx 片段
- 2025-01-21 Nginx域名配置
- 2025-01-21 Nginx配置终极手册:一站式详尽教程
- 2025-01-21 HHvm建站环境搭建方法:Nginx、lnmp/lamp等安装部署
- 2025-01-21 nginx修改conf后不生效的解决方法与root|alias总结
- 2025-01-21 前端项目中 浏览器缓存的更新不及时问题及解决方法
- 2025-01-21 Nginx反向代理:通过外网访问内网数据库(mysql)
- 2025-01-21 如何使用 Daphne + Nginx + supervisor部署 Django
- 2025-01-21 如何在Docker中打包部署Vue项目
- 2025-01-21 有遇到部署服务器后刷新404问题吗?
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)