nginx.conf 对于 NodeJS/React 应用返回 502 和 405
nginx.conf for NodeJS/React App returning 502 and 405
尝试在 Amazon LINUX EC2 实例上设置暂存环境并从 Heroku 迁移。
我的存储库有两个文件夹:
- 网络
- API
我们的前端和后端在部署中运行在同一个端口
在 dev 中,这些 运行 在不同的端口上,所有来自 WEB 的请求都被代理到 API
(例如,端口 3000 上的 WEB 运行s 和端口 3001 上的 API 运行s。在 package.json[=55 中设置代理=] WEB 文件/)
目前应用部署是这样的:
- 构建网络/分发
- 复制 build/ 到 API 文件夹
- 使用
web npm start
部署到 Heroku
在prod中,我们只用WEB构建部署API文件夹/
当前 nginx.conf 看起来像这样
Commented out all other attempts
也使用 PM2 来 运行 像这样的线程
$ sudo pm2 bin/www
当前线程 运行ning 是这样的:
pm2 log
这是 运行宁在 EC2 实例
的端口 3000
例如,转到 public IPv4 DNS 将我带到登录,它是从 /build 文件夹中获取的,但是 none 登录方法(或任何 API 调用) 在工作中。
502 response example
我尝试了很多不同的配置。将 proxy_pass 设置为端口 3000,因为那是节点进程 运行ning 所在的端口。
我得到的唯一响应代码是 405 Not Allowed 和 502 Bad Gateway
如果我可以提供任何其他信息来找到解决方案,请告诉我。
您的配置中似乎没有上游块。看起来您正在尝试使用 proxy-pass
发送到命名服务器和端口而不是定义的上游。此页面上有一个示例,展示了如何定义上游,然后向其发送流量。 https://nginx.org/en/docs/http/ngx_http_upstream_module.html
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}````
原来存储在 Postgres 中的快速会话存在问题。
这导致我重新测试连接字符串,我发现我一直收到以下错误:
connect ECONNREFUSED 127.0.0.1:5432
我确实有一个包含环境变量的 .env 文件,但 pm2 没有读取它们。
所以我将这一行添加到 app.js:
const path = require("path");
require('dotenv').config({ path: path.join(__dirname, '.env') });
然后使用以下命令使用 pm2 重新启动应用程序:
$ pm2 restart /bin/www --update-env
尝试在 Amazon LINUX EC2 实例上设置暂存环境并从 Heroku 迁移。 我的存储库有两个文件夹:
- 网络
- API
我们的前端和后端在部署中运行在同一个端口
在 dev 中,这些 运行 在不同的端口上,所有来自 WEB 的请求都被代理到 API (例如,端口 3000 上的 WEB 运行s 和端口 3001 上的 API 运行s。在 package.json[=55 中设置代理=] WEB 文件/)
目前应用部署是这样的:
- 构建网络/分发
- 复制 build/ 到 API 文件夹
- 使用
web npm start
部署到 Heroku
在prod中,我们只用WEB构建部署API文件夹/
当前 nginx.conf 看起来像这样 Commented out all other attempts
也使用 PM2 来 运行 像这样的线程
$ sudo pm2 bin/www
当前线程 运行ning 是这样的:
pm2 log
这是 运行宁在 EC2 实例
例如,转到 public IPv4 DNS 将我带到登录,它是从 /build 文件夹中获取的,但是 none 登录方法(或任何 API 调用) 在工作中。 502 response example
我尝试了很多不同的配置。将 proxy_pass 设置为端口 3000,因为那是节点进程 运行ning 所在的端口。 我得到的唯一响应代码是 405 Not Allowed 和 502 Bad Gateway
如果我可以提供任何其他信息来找到解决方案,请告诉我。
您的配置中似乎没有上游块。看起来您正在尝试使用 proxy-pass
发送到命名服务器和端口而不是定义的上游。此页面上有一个示例,展示了如何定义上游,然后向其发送流量。 https://nginx.org/en/docs/http/ngx_http_upstream_module.html
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}````
原来存储在 Postgres 中的快速会话存在问题。 这导致我重新测试连接字符串,我发现我一直收到以下错误:
connect ECONNREFUSED 127.0.0.1:5432
我确实有一个包含环境变量的 .env 文件,但 pm2 没有读取它们。 所以我将这一行添加到 app.js:
const path = require("path");
require('dotenv').config({ path: path.join(__dirname, '.env') });
然后使用以下命令使用 pm2 重新启动应用程序:
$ pm2 restart /bin/www --update-env