我想使用 nginx 在同一台服务器上部署 back-end 和 front-end 单独的应用程序

I want to deploy back-end and front-end seperate apps on the same server with nginx

我用 nodejs 创建了一个 restful api,我打算将 sapper/svelte 用于 front-end。最后,这些将是单独的应用程序,我想 运行 它们在具有相同域的同一服务器上。这种做法合理吗?如果是,我的 nginx 配置文件应该是什么样的?如果不是,我的方法应该是什么?

这是我 api 的会议:[​​=13=]

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;
    }
   .
   .
   .
}

因为这是你的第一个 svelte / sapper 项目,我会把事情分开,看看你是否可以开始使用 svelte 在 nginx 上达到 API。分离事物并运送 svelte on gitlab pages 或您喜欢的任何其他 CI 目的地。

如果需要 运行 使用 sapper,我的建议保持不变 - 让它从外部影响您的 API 以保持您的项目清晰明了。您已经在前端之前启动了 API - 不用担心,但我不明白您的配置如何需要知道前端 运行 的位置或者为什么将它们缠绕在一起会有好处。

按照最佳实践,您的 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;

        ...
    }
}