部署可在nginx

时间:2018-07-03 16:31:34

标签: reactjs express nginx

我在ec2实例上有一个快速服务器,该实例具有一个api(/api)和一个客户端(react中未处理的所有/api客户端)

转到http://ip.address:3000可以正常工作。它显示了该应用程序,一切正常。

但是,转到https://ip.address(由nginx转发)不能正常工作。它会正确加载我的index.html,但会在所有/static/bundle.js/static/bundle.css文件上加载404。

nginx

    # redirect to node for the dynamic stuff
    location / {
            proxy_pass https://localhost:8003/index.html;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;

            proxy_hide_header X-Powered-By;
    }

表达

let router: express.Router = express.Router();
router.use(express.static(path.join(__dirname, "/build")));

const api: ApiRouter.Api = new ApiRouter.Api();
router.use("/api", api.router.bind(api.router));

//Catch all for react - client side routing
router.get("*", function(req, res) {
  res.sendFile(path.resolve(__dirname, "/build/index.html"));
});

1 个答案:

答案 0 :(得分:0)

如果您告诉Nginx

proxy_pass https://localhost:8003/index.html;

然后,每个与该位置块匹配的请求都将其URL路径的匹配部分替换为您添加到proxy_pass URL中的任何路径。

您的位置块只是/,因此,如果我请求www.yoursite.com/static/bundle.js,则Nginx将匹配第一个/,将其替换为您的路径并添加其余的。因此它将尝试并服务www.yoursite.com/index.htmlstatic/bundle.js

您也应该通过Nginx代理/ api,如果静态文件来自上游代理,则也应在Nginx内启用代理缓存