Reactjs 使用nodejs和nginx为多个react应用程序提供服务

Reactjs 使用nodejs和nginx为多个react应用程序提供服务,reactjs,express,nginx,loopbackjs,Reactjs,Express,Nginx,Loopbackjs,我有一个环回应用程序,它提供API,并提供静态文件。和2个使用相同环回应用程序的React应用程序 我使用serve static和vhost提供静态文件(来自React构建文件夹) var serveSubdomainAbc = serveStatic('abc/build', { index: ['index.html'] }); var serveSubdomainXyz = serveStatic('./../../xyz-abc/build', { inde

我有一个环回应用程序,它提供API,并提供静态文件。和2个使用相同环回应用程序的React应用程序

我使用serve static和vhost提供静态文件(来自React构建文件夹)

  var serveSubdomainAbc = serveStatic('abc/build', {
    index: ['index.html']
  });
  var serveSubdomainXyz = serveStatic('./../../xyz-abc/build', {
    index: ['index.html']
  });

  app.use(vhost('abc.example.com', serveSubdomainAbc));
  app.use(vhost('xyz-abc.example.com', serveSubdomainXyz));
我还使用非常基本的设置设置了nginx服务器

server {
    listen 80;

    server_name localhost;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
当我直接访问应用程序的根目录时,一切正常,比如

  • abc.example.com
  • xyz-abc.example.com
提供index.html,然后react应用程序正常启动。当我使用路由器链接时,比如,
xyz abc.example.com/ssoRedirect,则无法找到ssoRedirect,它会返回到abc.example.com的index.html并提供该文件,因此ssoRedirect无法工作。当无法找到所需的静态文件时,如何使其返回到正确的index.html。

我已停止nginx,并在端口80上直接使用nodejs为应用程序提供服务,行为相同,第二个应用程序在prod Environment上仍然失败,在我的MacBook上运行良好。我最终创建了一个ssoRedirect文件夹并将index.html文件复制到其中。我还添加了一个中间件来重写req url,这似乎也运行良好。