博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx + 一个端口 部署多个单页应用(history模式)
阅读量:6964 次
发布时间:2019-06-27

本文共 1346 字,大约阅读时间需要 4 分钟。

目前web开发 使用一般前后端分离技术,并且前端负责路由。为了美观,会采用前端会采用h5 history 模式的路由。但刷新页面时,前端真的会按照假路由去后端寻找文件。此时,后端必须返回index(index.html)文件才不至于返回404。

nginx 部署一个单页应用很简单:

location / {      root   html;      try_files $uri /index.html index.html;   }

root是web服务器目录,try_files 为文件匹配,先找真实的地址($uri),如果找不到,再找index.html文件。

#此处注意,history模式不可以使用相对位置引入方式(./)

但如果几个单页应用同时需要部署在同一台电脑上,并且都需要占用80或者443端口,就不太容易了。

介绍2种相同ip端口部署多个单页应用(前端路由)的方法。

  1. 使用子域名区分,此种方法最是简单。但是限制也大,必须要买域名,或者修改访问者电脑的hosts文件。

    server {    listen       80;    server_name  aa.gs.com;  #子域名aa访问时    localtion / {       root E:/ee; #windows 路径,E盘下面ee文件为aa.gs.com的服务器目录。       try_files $uri /index.html index.html;    }}server {   listen       80;   server_name bb.gs.com; #访问子域名bb时。   location / {       root   /root/bb; # linux /root/bb文件夹作为服务器目录。       try_files $uri /index.html index.html;   }}
  2. 采用路径的第一个文件夹名字作为区分。例如:https://aa.com/a/xxhttps://aa.com/b/xx。采用ab作为区分,分别表示不同的项目。

    需要设置点:

    1. 前端打包后的文件引用地址,需要加上'/a/' '/b/'为前缀 。比如 <script scr="/a/test.js"></script>(webpack 为设置publicPath: '/a')
    2. 前端的路由路径必须加上/a/前缀:比如真正地址test.com/ss,需改成test.com/a/ss
    server {       listen       80;       root /root/test; #web服务器目录;       location ^~ /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       }        }

转载地址:http://wowsl.baihongyu.com/

你可能感兴趣的文章
7月10日垃圾邮件报告:广东居十大垃圾邮件发送地之首
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
全面剖析 Knative Eventing 0.6 版本新特性
查看>>
流,用声明性的方式处理数据集 - 读《Java 8实战》
查看>>
【翻译】How To Become A Blockchain Developer: Crash Course! 区块链开发指南!
查看>>
linux修改或者配置IP地址、网络YUM源(针对Centos)
查看>>
MVC Cookie的使用
查看>>
mysql主从配置
查看>>
Linux 消耗CPU和内存的代码段----测试用的
查看>>
VMware与Hyper-V不兼容
查看>>
OSX加载驱动提示invalid signature
查看>>
第0篇.C++开发环境介绍
查看>>
Ubuntu 源代码阅读和函数、变量的定位--之一
查看>>
Java - Keywords 基本数据类型 Identifier
查看>>
我的友情链接
查看>>
Core Linux 操作文档(一)
查看>>
hadoop安装过程中ubuntu系统ssh免密码登陆设置 
查看>>
input按钮的background-image属性兼容性问题
查看>>
java.lang.*不用我们导入,编译器会自动给我们导入的,,,这个包是默认导入的。...
查看>>
shell 小脚本
查看>>