Nginx在同一域下服务多个React应用

时间:2019-02-14 08:07:15

标签: reactjs nginx

以下是我目前拥有的配置,用于基于用户代理在同一域上提供三个不同的React应用。此外,该API托管在特定子路由的同一域下。

upstream app {
        server localhost:3000;
}

server {
      index index.html;

        server_name xyz.com;

        location / {
           root /var/www/html/desktop/build;

           if ( $uri ~ "^(.*)/manage(.*)"){
                root /var/www/html/admin/build;
               /* this returns 404 page when directly loading /manage/login */
                break;
            }

          set $mobile_rewrite do_not_perform;

          if ($http_user_agent ~* ("Mobile agents match"){
          set $mobile_rewrite perform;
          }

         if ($mobile_rewrite = perform) {
             root /var/www/html/mobile/build;
             break;
           }
         try_files $uri /index.html;
         /* this try files never gets used because of if directive*/ 
         }

            location /api {
                    root /home/user/api-app;
                    proxy_redirect off;
                    proxy_set_header X-Real-IP  $remote_addr;
                    proxy_set_header X-Forwarded-For $remote_addr;
                    proxy_set_header Host $http_host;
                    proxy_pass http://app;
                    proxy_read_timeout 600;
            }

在配置上可能无法在同一个域上运行4个不同的应用程序,但是这是我目前的需要,有没有更好的方法来做到这一点。尝试使用alias而不是root指令没有运气。我了解问题在于try_files未被执行,这是在URL栏中直接输入路由时为React应用提供服务所必需的(如果未启用服务器端渲染,则我不使用服务器端)在这种情况下呈现)。

0 个答案:

没有答案