浏览器URL和HTTP请求

时间:2017-11-10 19:43:49

标签: node.js express nginx browser

我目前正在构建一个网络产品组合,它结合了我过去制作的许多小型网络应用程序。在路线(/)处,您会找到一个页面,其中包含指向其他较小网络应用的链接。例如,有一个指向路线(/棋盘游戏)的链接,它将您带到我过去制作的小型棋盘游戏网络应用程序。

我挣扎的是这个。较小的网络应用程序棋盘游戏为不包含前缀路由(/棋盘游戏)的路线提供了html,css和javascript。因此,当棋盘游戏页面请求(/css/style.css)时,没有加载任何内容,因为内容实际上是(/board-game/css/style.css)。

我的问题是这个。有没有办法将这些请求重新路由到适当的路由?我想避免重写这些小项目的任何部分。有什么建议?谢谢。

另外,这是我当前的nginx.conf文件。

worker_processes 1;

events {
  worker_connections 1024;
}

http {
  upstream portfolio {
    server portfolio-svc:8080;
  }

  upstream board-game {
    server board-game-svc:8080;
  }

  server {
    listen 80;

    location / {
      proxy_pass http://portfolio/;
    }

    location /board-game {
      proxy_pass http://board-game/;
    }
  }
}

1 个答案:

答案 0 :(得分:1)

您需要将路径重写为位置的一部分,例如:

worker_processes 1;

events {
  worker_connections 1024;
}

http {
  upstream portfolio {
    server portfolio-svc:8080;
  }

  upstream board-game {
    server board-game-svc:8080;
  }

  server {
    listen 80;

    location = / {
      proxy_pass http://portfolio/;
    }

    location = /board-game {
      proxy_pass http://board-game/;
      rewrite ^(.*)board-game(.*)$ http://board-game/$2 permanent;
      sub_filter /css/ /board-game/css/
    }
  }
}

你可能不得不玩匹配,但这是一般的想法。