我正在尝试将一个MERN堆栈应用程序部署到一个DigitalOcean droplet。我的后端运行在Nginx服务器上,并成功连接到MongoDB atlas实例。我已经使用FileZilla为我的静态文件提供服务,并且这些文件在我没有向服务器请求的路由上被成功地提供。但是在向服务器发出请求的路由上(从MongoDB获取、发布、放置或删除记录),页面会加载几毫秒,然后由于无法从API获取数据而导致的错误,所有内容都会消失。由于后端正在运行并连接到MongoDB,我认为我传递给Axios的网址可能不正确。我在前端package.json中定义了一个代理值,如下所示:
"proxy": "HTTP://localhost:5000"
我提出的要求如下:
axios.get('/api/members')
它在我的本地机器上运行得很好。然而,我在一个stackoverflow线程上读到代理只在开发模式下生效,而不是在生产模式下生效。因此,我从package.json文件中删除了代理,并将axios请求更改为:
axios.get('[IP_to_the_droplet]/members']
我不确定这是正确的,我认为不正确,因为在我的前端使用HTTP请求的路由仍然不起作用。您认为这个问题与HTTP请求有关吗?你知道我该怎么解决这个问题吗?
提前谢谢你
发布于 2021-07-06 23:26:14
您通常需要一个反向代理服务器来将localhost:5000映射到droplet的IP。你可以很容易地在Nginx中设置一个反向代理。下面是你如何做到这一点。
您将使用一个守护程序启动应用程序,以便在localhost:5000上广播,这将是您的Nginx配置
. . .
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://stackoverflow.com/questions/68278296
复制相似问题