部署前后端分离式nginx配置的完整步骤

  

  

老生常谈了,这里谈谈我的理解的前后端分离,简单的分离无非是将原来mvc的视图层剥离出来,独立一个成为Servlet服务,Servlet之间依靠http连通。这里的观点Servlet容器可以是任意一种服务端服务,Tomcat, Apache, Nginx, IIS,都可以。这里以常用的Nginx为例子做简单的介绍。
  

  


  

  

先来一波需求分析。

  
      <李>单项目   
        <李>单项目指的是一台服务器部署一个前端服务,使www.xxx.com=比;李index . html的单一指向。   
      李   <李>多项目   
        <李>多项目指的是一台服务器部署多个前端服务,使www.xxx.com/a=比;a.html,www.xxx.com/b=比;李b.html等多指向。   
      李   <李>请求代理。   <李> cookie域重写。   <李>饼干路径重写。   
  

提示:这里做好写conf.d/*。相依,这样配置可以分离处理。
  

  


  

        服务器{   听80;#配置端口   server_name _;#配置域名   utf - 8字符集;#编码   access_log/xxx/日志/nginx_access。日志主要;#成功日志   error_log/xxx/日志/nginx_error。日志错误;#错误日志   指数index . html;#查找文件顺序   设置$ root/xxx/nginx/;#变量设置,设置公共路径      #其余位置   }      

请手动去/xxx/日志/nginx_access.log和/xxx/日志/nginx_error。记录下新建对应文件。可能会执行nginx重载第一次执行时会报错。
  

  

设置的美元根路径为绝对路径,access_log和error_log同样都是绝对路径。

  


  

  

目录结构
  

        nginx   | - - - - - - index . html   | - - - - - - user.html      

位置配置
  

        位置/{   根美元根;   }      

好了最简单的基于根路径配置就这样好了,这里无非是通过位置配置一条路径,然后指向美元到根文件夹下的指数。html这个文件下。
  

  


  

  

目录结构
  

        nginx   | - - - - - - a   | - - - - - - index . html   | - - - - - - b   | - - - - - - index . html      

多条位置配置
  

        位置^ ~/{   别名$ root/;   }      位置^ ~/b {   别名$ root/b;   }      位置/{   根美元根;   }      

跟单项目唯一的不同点在于,根和别名的区别,根指的是文件的绝对匹配路径,而别名则是相对匹配.root可以再http服务器,位置中配置,而别名只能在位置中配置。这我还加入的正则^ ~,当匹配/或者/b时,不管位置的路径是什么,资源的真实路径一定是都是别名指定的路径。这样的我就能让/a/b拥有匹配的到路径之后,拥有跳转固定路径,这在spa式的前端项目非常有用的,因为其实核心文件只有一个index . html文件(资源文件另说)。这样我永远跳转指数。html就能保证浏览器手动刷新的时候,不会根据根路径去查找服务器其他路径的资源,然后设置spa的根路径和/b必须是匹配的。
  

  

为什么会有这种需求?前端是轻便的,我们为了达到节约服务器与聚合同类型业务的时候,就会使用到这种机制。就像希望admin.xxxx.com/a=比;运营管理台,admin.xxxx.com/b=比;erp管理台一样。所管理这有个域名下我们只要切出子路径即可。简单轻便。
  

  


  

        位置^ ~/api {   proxy_pass http://api.xxx.com/;   }      

这里就特别简单了,我通过正则匹配/api这个请求,通过proxy_pass属性,将请求定向到http://api.xxx.com。即可
  

  


  

  

有时候处于安全考虑,我们会设置一定的饼干的域属性这是对于nginx转发来说就很不友好了。当然也是有解决手段的,也很简单。
  

        位置{   proxy_cookie_domain & lt;本域的domain>& lt;想修改的domain>;   }      

  

当我们转发回api接口时,有时候api域名拿不到饼干,除了域还有饼干路径的可能性。当然解决方案也很简单
  

        位置{   proxy_cookie_path & lt;本域的路径比;& lt;想修改的路径比;;   }

部署前后端分离式nginx配置的完整步骤