在Nginx子路径

时间:2017-06-27 13:48:51

标签: node.js nginx webpack webpack-2

我怀疑的解释

我在Docker Container上运行了一个应用程序,并且使用了这个应用程序:

  • 的WebPack
  • React Router 4
  • Express.js
  • GraphQL

我的应用在根文件夹www.mycoolurl.com/下运行良好。但我在我的根上运行了其他应用程序,所以我创建了www.mycoolrul.com/coolsubpath

快速

app.use(express.static(__dirname + "/dist"));

app.get("/*", function(req, res) {
    res.sendFile(__dirname + "/dist/index.html");
});

Nginx配置

upstream coolapp{
    server       1.1.1.1:8000;
}



location /coolsubpath {
    # Upstream
    proxy_pass         http://coolapp/;
    proxy_redirect     off;
    proxy_set_header   Host $host;
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Host $server_name;
    client_max_body_size 3M;
}

我对此的第一次体验非常糟糕......每个请求都试图安装我的App,Vendor和Manifest(webpack的东西,只需要挂载在root上)。所以我最终这样做了:

Webpack配置

output: {
    filename: "[name].[chunkhash].js",
    path: resolve(__dirname, "../dist"),
    chunkFilename: "[chunkhash].js",
    publicPath: "/"
},

现在只有root会加载资源,但是...当我转到www.mycoolrul.com/coolsubpath时,只找到了我的index.html并且...... Assets Loading

资产正在寻找我的前任。 www.mycoolurl.com/app.761c16f76fcba6601577.js/代替www.mycoolrul.com/coolsubpath/app.761c16f76fcba6601577.js/

我的期待

我测试了将React Router 4子路径...和我的Express.js子路径名添加到.get.use方法。是的,它有效。但现在我希望我的子路径代替coolsubpath,如前所述。 mynewsupercoolsubpath。我必须重新构建和部署应用程序吗?。

我尝试了什么......

我尝试重写request url但没有运气,我知道代码错了......但我不知道该怎么做

if ($http_referer ~* ^www.mycoolrul.com/coolsubpath ) {
   set $request_url /coolsubpath/$1;
}

0 个答案:

没有答案