我想使用Nginx在同一台服务器上部署后端和前端单独的应用程序

时间:2020-02-13 12:43:04

标签: node.js nginx svelte sapper

我已经用nodejs创建了一个宁静的api,并且打算将sapper / svelte用于前端。最后,这些将是单独的应用程序,我想在具有相同域的同一服务器上运行它们。这种方法合理吗?如果是的话,我的Nginx配置文件应该是什么样?如果没有,我应该怎么做?

这是我的api conf:

server {
    server_name domain.name;

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

2 个答案:

答案 0 :(得分:1)

按照最佳实践,您的API将位于BASE / api /

这将使您可以在同一服务器上托管后端+前端

server {
    server_name domain.name;

    location /api/ {    # Backend
        proxy_pass http://localhost:5000;
        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;

        ...
    }

    location / {    # Frontend
        root        /app-path/;
        index       index.html;
        try_files   $uri $uri/ /index.html;

        ...
    }
}

答案 1 :(得分:0)

由于这是您的第一个svelte / sapper项目,因此我将把它们分开,看看您是否可以开始使用svelte来实现nginx上的API。解耦并运送svelte on gitlab pages或您喜欢的任何其他CI目标。

如果需要使用精打细算器运行,我的建议仍然是相同的-让它从外部访问您的API,以使您的项目清晰明了。您已经在前端之前启动了API-不用担心,但是我看不到您的配置如何知道前端将在哪里运行或为什么将它们缠绕在一起将是有益的。