我有nginx在服务器上运行我的(node.js / react)应用程序。但是我似乎无法连接到数据库。
在nginx.conf文件中,我在http内添加了以下内容。
http {
...
server {
listen 80;
server_name localhost;
...}
...}
在http部分上方,我有以下内容,
stream {
server {
listen 4000;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass stream_mongo_backend;
}
upstream stream_mongo_backend {
server 127.0.0.1:27017;
}
}
我启动了nginx服务器,该应用程序在localhost上运行,打开了登录页面,但由于它仍未连接到数据库(mongodb),所以无法登录。 我不确定端口号是否错误或nginx.conf中是否缺少某些配置行。
编辑:好的,我之前弄错了。我当时不应该连接到mongodb。我应该连接到运行在4000下的应用程序的后端服务器。因此,现在我在http内为/ api /添加了一个新位置,并将所有请求代理到4000。尽管如此,我仍然有一个问题。我必须单独运行我的后端服务器才能正常工作。对于前端,我已经创建了一个文件夹并将所有构建文件放在其中,以便nginx从那里启动Web服务器。对后端执行相同操作不会启动服务器。有没有办法让Nginx也启动后端服务器? 还可以让前端直接运行而无需构建文件吗?像节点会启动npm吗?
答案 0 :(得分:0)
端口号正确。尝试打开mongo
外壳程序,看看是否能够访问mongo
实例。否则,您将需要运行sudo service mongodb start
来启动它。
答案 1 :(得分:0)
猜猜已经晚了,但您不需要为后端设置 nginx 来连接本地 mongodb。
如果你想在没有构建文件的情况下运行它,你需要先通过 yarn start
、node run
或类似的东西运行前端和后端服务器。
然后绕过从 80 端口到本地主机服务器的调用。 比如你的FE运行在3000端口,BE运行在5000端口。 那么你的 nginx 应该是:
http {
...
server {
listen 80;
server_name localhost;
location /api/ {
proxy_pass localhost:5000;
}
location / {
proxy_pass localhost:3000;
}
...}
...}