当前位置:首页 > 技术文章 > 正文内容

关于前后端分离项目的部署模式一些思考

arlanguage3个月前 (01-31)技术文章19

之前项目没有前后端分离的时候,部署贼简单,直接启动一个应用就可以了。但是如果拆分成前后端分离的项目,那么部署方式可能就变了,毕竟已经有两个项目了,那具体怎么部署呢?毕竟两个项目有可能会有跨域的问题。

部署方案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,若不需要则加上,需要则不用加。

感想

都是为了解决跨域问题啊!

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1393.html

标签: nginx try files
分享给朋友:

“关于前后端分离项目的部署模式一些思考” 的相关文章

nginx 多域名配置 nginx多站点配置示例

Nginx 可以配置多个域名,以便根据不同的域名来处理不同的请求。下面是一个配置多个域名的例子:server { listen 80; server_name example1.com; location / { root /var/www/example1...

利用Nginx正向代理实现局域网电脑访问外网

引言在网络环境中,有时候我们需要让局域网内的电脑访问外网,但是由于网络策略或其他原因,直接访问外网是不可行的。这时候,可以借助 Nginx 来搭建一个正向代理服务器,实现局域网内电脑通过 Nginx 转发访问外网的需求。在工作中我遇到了一个类似的情况:在公司网络中,由于管理要求,局域网内的电脑不能直...

我采访了一位 Pornhub 工程师,聊了这些纯纯的话题

成人网站在推动 Web 发展方面所起到的作用无可辩驳。从突破浏览器的视频能力限制,到利用 WebSocket 推送广告(防止被广告拦截器拦截),你必须不断想出各种聪明的办法,让自己处在 Web 技术创新的最前沿。最近,我有幸采访了大型成人网站 Pornhub 的一位 Web 开发工程师,了解了相关的...

Nginx缓存设置教程

这篇文章主要介绍了Nginx缓存设置案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache不缓存配置和nginx不缓存配置的设置。在...

压测nginx出现的问题分析

压测nginx出现no live upstreams while connecting to upstream的问题分析基础环境版本信息Centos 7.1nginx version: openresty/1.13.6.2nginx配置信息stream {   ...

提升网站性能开发的10个技巧 提升网站性能开发的10个技巧是什么

随着网络的高速发展,网络性能的持续提高成为能否在芸芸App中脱颖而出的关键。高度联结的世界意味着用户对网络体验提出了更严苛的要求。假如你的网站不能做到快速响应,又或你的App存在延迟,用户很快就会移情你的竞争对手。以下为大家总结10条有关性能提升的经验,以供参考:1. 采用反向代理服务器(Rever...