【问题标题】:Routing API requests to Node Server in MEAN app while deploying in server在服务器中部署时将 API 请求路由到 MEAN 应用程序中的节点服务器
【发布时间】:2019-07-03 09:33:29
【问题描述】:

我在子域https://app.example.com 中部署我的MEAN 应用程序

这是我的应用程序文件夹结构

app
 - frontend (Angular Code)
 - backend (NodeJS Code)

服务器在 NGINX 上运行,这里是配置细节:

 server {

    listen 80;
    listen [::]:80;

    server_name app.example.com;
    root /var/www/app/frontend/dist;

    index index.html;
    location / {
            try_files $uri $uri/ /index.html?$query_string;
    } 

}

我在同一个子域的 8080 端口运行我的 NodeJS 代码。 日志显示服务器在端口上运行成功。

但是当我的应用程序从 Angular 应用程序发出 API 请求时,请求会超时。

我猜这是因为配置文件中的路由,我如何使 API 请求通过我的 NodeJS 代码路由。

【问题讨论】:

    标签: node.js angular nginx mean-stack


    【解决方案1】:

    您必须将请求从 nginx 转发到您的应用程序。目前,您的服务器除了提供 html 文件外什么也没做。阅读 nginx 文档或查找有关 proxy_pass 设置的教程。

    目前你可以把它添加到你的 nginx 中,它会启动

    . . .
    location / {
        proxy_pass http://localhost:8080;
        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;
    }
    

    }

    【讨论】:

    • 我应该在try_files 下面添加这些行吗?
    • 其实没关系,try_files 只是告诉 nginx 提供这些文件。但是为什么要提供 html 文件呢?让 nodejs 将它们作为应用程序服务。所以我认为,如果你没有真正的理由并且你没有 100% 理解目标,那就排除它并留下我给你的东西。
    猜你喜欢
    • 2017-09-05
    • 2014-05-06
    • 2018-12-28
    • 2017-07-02
    • 2020-04-18
    • 2021-01-17
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    相关资源
    最近更新 更多