最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在同一服务器上托管React FrontEnd和NodeJs后端

运维笔记admin18浏览0评论

在同一服务器上托管React FrontEnd和NodeJs后端

在同一服务器上托管React FrontEnd和NodeJs后端

我已经制作了一个全栈应用程序,它具有由React和用nodejs(Express)编写的server.js的前端,并且我正在使用Postgres作为我的数据库。我曾经做过一次,并将我的网站托管在Heroku上。

不同之处在于,在Heroku上,我的前端和后端分别位于单独的Urls上,以便在我的react应用程序中可以执行此操作

fetch('http://localhost:3005/url',{
    method: 'get',
    headers: {'Content-Type': 'application/json'},
})
.then(response => response.json())

上面的代码是当我通过npm start在笔记本电脑上运行我的react和node时。

我的server.js将是

app.get('/url', (req, res) => {
    db.insert({
       page_url: req.body.urlInfo,
       user_visit_id: req.body.visitID,
    })
    .into('pageurl')
    .then((id) => {
        res.json(id);
    }).catch(err => res.status(400).json('unable to write'))
})

在Heroku中,我只是将前端React行更改为:

fetch('http://**Ther  URL where my server.js is**/url',{
    method: 'get',
    headers: {'Content-Type': 'application/json'},
})
.then(response => response.json())

这将运行得很好。现在出现了问题,我必须将应用程序部署到学校服务器。服务器已运行nginx,并且已为我指定了该项目的域。

前端托管在Nginx上,每当我访问我的域时,前端都会显示出来,但是鉴于我必须将server.js与react应用放置在同一服务器上,因此如何将其连接到我的server.js端点。由Nginx托管。我对nginx完全陌生,对解决问题没有具体想法。我使用pm2在服务器上运行了节点server.js。

但是现在这没什么用,因为我的前端获取执行localhost:3005 / url,它在访问域的设备的端口3005中查找URL点,而不是托管前端和主机的实际服务器。节点server.js。

[我还尝试将server.js中的localhost:3005/url替换为使用服务器的ip,但只有在我使用学校的wifi连接时,该地址才似乎可以访问。

如果更改,请通过数据连接从手机输入该IP地址,无法访问该地址。因此,我认为"ipaddress:3005/url"也不是正确的方法。我现在迷失了,任何建议都将是一个很大的帮助!!!理想情况下,我想在服务器的nginx上运行我的前端主机,并使pm2运行server.js。

我只需要一种连接前端和后端端点的方法。我需要

我的server.js所在的URL

获取('http:// server.js所在的URL / url',{方法:“获取”,标头:{'Content-Type':'application / json'},}).then(response => response.json())

谢谢!

回答如下:

[我要做的是在另一个端口上的nginx中设置一个虚拟主机,该主机代理对您的nodejs应用程序的所有请求,例如:

server {
    listen 8080;
    server_name example;
    location / {
        proxy_pass http://127.0.0.1:3005;
        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;
     }
}

在此示例中,已做出以下假设:

  1. example是学校分配给您的项目的域
  2. 端口8080是您将在首页中打开并设置的端口:fetch('http://example:8080', {})
  3. 您的nodejs应用程序在端口3005上运行
发布评论

评论列表(0)

  1. 暂无评论