Html 如何设置NGINX以部署动态多个单页应用程序?

Html 如何设置NGINX以部署动态多个单页应用程序?,html,nginx,Html,Nginx,我的目标是: 使用nginx作为前端服务器,我有多个HTMLs和单页应用程序(作为HTML文件),其他静态文件将上载到CDN(如.js/.css/.img) 那么,如何设置nginx config一次,解决所有动态SPA server { listen 80; server_name example.com; rewrite ^(/.*)\.html(\?.*)?$ $1$2 permanent; rewrite ^/(.*)/$ /$1 permanent;

我的目标是:

使用nginx作为前端服务器,我有多个HTMLs和单页应用程序(作为HTML文件),其他静态文件将上载到CDN(如.js/.css/.img)

那么,如何设置nginx config一次,解决所有动态SPA

server {
  listen       80;
  server_name  example.com;
  rewrite ^(/.*)\.html(\?.*)?$ $1$2 permanent;
  rewrite ^/(.*)/$ /$1 permanent;
  root  /opt/vipkid/ngTest;
  expires -1;

  location / {
      try_files $uri/index.html $uri.html $uri/ $uri =404;
  }

  location ~* ^/(?<single>.+)/.*$ {
      try_files $uri/index.html $uri.html $uri/ $uri /$single/index.html =404;
  } 
}
使用上面的配置,我可以达到:

  • Go example.com;Render:/index.html右键
  • 转到example.com/dira;Render:/dira/index.html右键
  • 转到example.com/dira/suba;Render:/dira/suba.html右键
  • 转到example.com/dirb;Render:/dirb/index.html右键
  • 转到example.com/dirb/single-route;Render:/dirb/index.html右键
  • Go example.com/dirb/single-route/sub;渲染:404错误

那么,如何配置ningx来解决这个问题呢?谢谢~

$single
应该是单个路径元素。您可以尝试使用排除
/
的字符类,例如:
^/(?[^/]+)/
@RichardSmith-Thx,它可以工作
├── dira
│   ├── index.html
│   └── suba.html
├── dirb
│   └── index.html
└── index.html