gpt4 book ai didi

node.js - 为什么我的 Nginx 反向代理 node.js+express 服务器重定向到 0.0.0.0?

转载 作者:搜寻专家 更新时间:2023-10-31 22:44:18 25 4
gpt4 key购买 nike

我有一个配置为通过 Ngnix 前端在多个域上托管多个 node.js+express 应用程序的服务器。一切都很好,除了从快速路由调用重定向时:

res.redirect('/admin');

然后客户端浏览器被重定向到http://0.0.0.0:8090

这似乎一定是来自 express 的重定向 header 的问题,但为了以防万一,这里是相关域的 nginx.conf 文件:

server {
listen 0.0.0.0:80;
server_name *.example.com;

access_log /var/log/nginx_example_access.log;
error_log /var/log/nginx_example_error.log debug;

# proxy to node
location / {
proxy_pass http://0.0.0.0:8090/;
proxy_redirect off;

proxy_set_header Host $proxy_host;
proxy_max_temp_file_size 0;

client_max_body_size 10m;
client_body_buffer_size 128k;

proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;

proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}

最佳答案

已解决。我的 nginx conf 文件出现问题,导致 node/express 接收到错误的请求 header 。将相对路径传递到 res.redirect 时,它会从传入的 req 对象中提取主机并将其设置在响应 header 中。

        proxy_set_header   Host             $proxy_host;

应该是

        proxy_set_header   Host             $host;

$proxy_host上游主机地址0.0.0.0:port

$host 是传入的请求 header Host example.com


更新

正如 Louis Chatriot 在评论中指出的那样,较新版本的 Nginx 已将 $host 替换为 $http_host,在以前的版本中返回 example.com: port 但现在返回 example.com

关于node.js - 为什么我的 Nginx 反向代理 node.js+express 服务器重定向到 0.0.0.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6405161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com