Nginx:从上游读取响应 header 时上游过早关闭连接
Nginx: upstream prematurely closed connection while reading response header from upstream
我有一个 express API 可通过 nginx 反向代理访问。除了一个使用 bcrypt 的处理程序外,一切正常。
我的 api nginx 配置:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name api.dev;
ssl_certificate /root/ssl/cert.crt;
ssl_certificate_key /root/ssl/cert.key;
access_log /root/nginx_logs/api_access.log;
error_log /root/nginx_logs/api_error.log;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_pass http://api:8880;
# Big timeout to test
proxy_connect_timeout 1200s;
proxy_send_timeout 1200s;
proxy_read_timeout 1200s;
}
}
我的快递员:
try {
const hashedPassword = await bcrypt.hash(payload.password, 10);
return handlerResult.ok({});
} catch (err) {
console.error(err);
}
当我在任何其他路由上请求我的 api 时,它可以正常工作,但是使用此处理程序 nginx 时出现此错误:
[error] 29#29: *27 upstream prematurely closed connection while reading response header from upstream
如果我评论 const hashedPassword = await bcrypt.hash(payload.password, 10);
错误消失。
一开始我以为是超时错误,但正如你所见,我在nginx中写了overkill timeout。
感谢您的阅读,有什么问题可以问我:)
PS:抱歉我的英语不好
我实际上是通过使用 bcryptjs 而不是 bcrypt 来修复的!
我有一个 express API 可通过 nginx 反向代理访问。除了一个使用 bcrypt 的处理程序外,一切正常。
我的 api nginx 配置:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name api.dev;
ssl_certificate /root/ssl/cert.crt;
ssl_certificate_key /root/ssl/cert.key;
access_log /root/nginx_logs/api_access.log;
error_log /root/nginx_logs/api_error.log;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_pass http://api:8880;
# Big timeout to test
proxy_connect_timeout 1200s;
proxy_send_timeout 1200s;
proxy_read_timeout 1200s;
}
}
我的快递员:
try {
const hashedPassword = await bcrypt.hash(payload.password, 10);
return handlerResult.ok({});
} catch (err) {
console.error(err);
}
当我在任何其他路由上请求我的 api 时,它可以正常工作,但是使用此处理程序 nginx 时出现此错误:
[error] 29#29: *27 upstream prematurely closed connection while reading response header from upstream
如果我评论 const hashedPassword = await bcrypt.hash(payload.password, 10);
错误消失。
一开始我以为是超时错误,但正如你所见,我在nginx中写了overkill timeout。
感谢您的阅读,有什么问题可以问我:)
PS:抱歉我的英语不好
我实际上是通过使用 bcryptjs 而不是 bcrypt 来修复的!