我收到502错误的网关错误:当我检查nginx错误日志时,我发现:
2017/05/06 02:36:04 [错误] 48176#0:* 135连接()失败(111:连接被拒绝)连接上游时,客户端:10.163.XX.X,服务器:abc-def -ghi,请求:“GET /favicon.ico HTTP / 1.1”,上游:“https://127.0.0.1:5300/favicon.ico”,主机:“hostnname”,referrer:“hostname-1
我搜索了足够的互联网但找不到任何东西。这里需要注意的一点是,这种间歇性错误仅在特定页面上出现。
这可能是代码问题吗?或者nginx配置问题>谁能在这里帮助我。
我的一些nginx conf:
upstream node_api_server {
server localhost:5300 fail_timeout=0;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_read_timeout 5m;
proxy_connect_timeout 5m;
proxy_pass_header Set-Cookie;
proxy_pass https://node_api_server;
proxy_redirect off;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
break;
}
答案 0 :(得分:6)
502错误通常是由于NGINX无法将请求传递给“上游”,在这种情况下是您的Node.js服务器(这也是错误消息提示的内容:“连接被拒绝” “)。
它可能正在崩溃并重新启动,因此请检查其日志文件以查看导致崩溃的原因。
答案 1 :(得分:4)
我对这些东西有点菜鸟,但我花了几个小时试图调试我的问题。结果是我的 API 中端口的全局变量没有被正确分配,所以节点没有监听正确的端口。由于我很少使用这些东西,我写下了我将来应该如何解决它,并想我会分享。同样,这是针对我的 API,所以您可能略有不同(我使用的是端口 3006)。
wget https://example.com/api/v1/ping
仔细检查您是否收到错误,或者如果您通过 ssh 连接到生产控制台,您可以执行 wget 127.0.0.1:3006/api/v1/ping
npm run build
和 npm run start
启动节点后,确保 pm2 使用 pm2 status
pm2 logs
检查 pm2 的错误日志。这应该会显示 API 中 console.log
消息的正常输出。它是否说它在正确的端口上运行?您可以让您的 api 在启动时记录您的端口,以确认它在正确的端口上。也检查其他错误。您可以使用 pm2 flush
sudo netstat -plunt
将为您提供打开的端口列表以及正在使用它们的程序。sudo ps aux | grep node
获取有关节点应用程序的更多信息,以使所有节点程序侦听端口,并且它将显示节点文件路径的完整路径。您可以匹配上一个命令中的 PID 以确保您的端口匹配。sudo systemctl nginx status
或将 status 替换为 start 以启动它sudo vim /var/log/nginx/error.log
检查 nginx 错误日志以确认您的端口和服务器名称正确。每次您向服务器发送命令时,它都会在此处记录 502 错误和错误消息:2021/02/20 03:05:28 [error] 26646#26646: *644 connect() failed (111: Connection refused) while connecting to upstream, client: XXX.XXX.XXX.XX, server:example.com, request: "GET /api/v1/ping HTTP/1.1", upstream: "http://127.0.0.1:3006/api/v1/ping", host: "example.com"
sudo nginx -t
来检查 nginx 配置文件的状态,以确保配置中没有任何错误/etc/nginx/nginx.config
中的 Nginx 配置文件。此文件可能包含 sites-enabled/default
配置文件。还要注意检查 sites-available/default
配置文件,以确保所有端口和服务器名称正确无误并确保没有重复项(很可能会出现在错误日志中)。sudo service nginx restart
重新启动 nginx 系统希望对你们中的一些人有所帮助! :) 快乐编码
答案 2 :(得分:0)
确保您正在运行npm start
或运行该应用程序的脚本。
答案 3 :(得分:0)
简单技巧:杀死nginx进程并重新启动UI
答案 4 :(得分:-1)
由于路径在require调用中没有正确的大小写,我们得到了502,在这种情况下是文件名。代码在本地执行(在VS代码中),但在部署时不执行。
const repoName = require('../ data / reponame'); //这应该是repoName