目前的web开发使用一般的前后端分离技术,前端负责路由。为了美观,前端会使用h5历史模式的路由。但是当页面刷新的时候,前端真的会按照false的路由去后端找文件。此时后端必须返回索引(index.html)文件,以免返回404。在nginx中部署单页应用非常简单:location/{roothtml;try_files$uri/index.htmlindex.html;}root是web服务器目录,try_files是匹配的文件,先找到真实地址($uri),如果找不到,再找到index.html文件。#这里注意历史模式不能使用相对位置导入方式(./),但是如果需要在同一台电脑上同时部署多个单页应用,并且都需要占用80或者443端口,则不容易。介绍在同一个ip端口部署多个单页面应用(前端路由)的两种方法。这种方法使用子域名最容易区分。但是限制也大,必须购买域名,或者修改访问者电脑的hosts文件。服务器{听80;服务器名称aa.gs.com;#当子域名aa访问localtion/{rootE:/ee;#windows路径,E盘下的ee文件是aa.gs.com的服务器目录。try_files$uri/index.htmlindex.html;}}服务器{听80;服务器名称bb.gs.com;#访问子域名bb时。位置/{root/root/bb;#linux/root/bb文件夹用作服务器目录。try_files$uri/index.htmlindex.html;}}使用路径的第一个文件夹名称作为区分。例如:https://aa.com/a/xx和https://aa.com/b/xx。a和b作为区分,分别代表不同的项目。需要设置的要点:前端打包后的文件引用地址需要加上'/a/''/b/'前缀。比如(webpacksetspublicPath:'/a')前端路由路径必须以/a/为前缀:比如真实地址test.com/ss,需要改成test.com/a/ssserver{listen80;根/根/测试;#web服务器目录;位置^~/a/{try_files$uri/a/index.html;#如果找不到文件,返回/root/test/a/index.html}location^~/b/{try_files$uri/b/index.html;#如果找不到文件,返回/root/test/b/index.html}}
