首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于MERN堆栈应用程序中客户端和后端之间的连接问题,不会提供静态文件

由于MERN堆栈应用程序中客户端和后端之间的连接问题,不会提供静态文件
EN

Stack Overflow用户
提问于 2021-07-07 07:11:54
回答 1查看 69关注 0票数 0

我正在尝试将一个MERN堆栈应用程序部署到一个DigitalOcean droplet。我的后端运行在Nginx服务器上,并成功连接到MongoDB atlas实例。我已经使用FileZilla为我的静态文件提供服务,并且这些文件在我没有向服务器请求的路由上被成功地提供。但是在向服务器发出请求的路由上(从MongoDB获取、发布、放置或删除记录),页面会加载几毫秒,然后由于无法从API获取数据而导致的错误,所有内容都会消失。由于后端正在运行并连接到MongoDB,我认为我传递给Axios的网址可能不正确。我在前端package.json中定义了一个代理值,如下所示:

代码语言:javascript
运行
复制
"proxy": "HTTP://localhost:5000"

我提出的要求如下:

代码语言:javascript
运行
复制
axios.get('/api/members')

它在我的本地机器上运行得很好。然而,我在一个stackoverflow线程上读到代理只在开发模式下生效,而不是在生产模式下生效。因此,我从package.json文件中删除了代理,并将axios请求更改为:

代码语言:javascript
运行
复制
axios.get('[IP_to_the_droplet]/members']

我不确定这是正确的,我认为不正确,因为在我的前端使用HTTP请求的路由仍然不起作用。您认为这个问题与HTTP请求有关吗?你知道我该怎么解决这个问题吗?

提前谢谢你

EN

回答 1

Stack Overflow用户

发布于 2021-07-07 07:26:14

您通常需要一个反向代理服务器来将localhost:5000映射到droplet的IP。你可以很容易地在Nginx中设置一个反向代理。下面是你如何做到这一点。

您将使用一个守护程序启动应用程序,以便在localhost:5000上广播,这将是您的Nginx配置

代码语言:javascript
运行
复制
. . .
    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;
    }
}

详细步骤如下:

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04#set-up-nginx-as-a-reverse-proxy-server

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68278296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档