[英]Why is my Nginx reverse-proxy node.js+express server redirecting to 0.0.0.0?
我有一个配置为通过Ngnix前端在多个域上托管多个node.js + express应用程序的服务器。 一切正常,除了从快速路由发出重定向调用时:
res.redirect('/admin');
然后将客户端浏览器重定向到http://0.0.0.0:8090
看来,快递标头中的重定向标头一定是一个问题,但是为了防万一,它是有关域的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文件出现问题,导致节点/表达式接收到错误的请求标头。 当相对路径传递到res.redirect
,它将从传入的req
对象中拉出Host并将其设置在响应头中。
proxy_set_header Host $proxy_host;
本来应该
proxy_set_header Host $host;
$proxy_host
是上游主机地址0.0.0.0:port
$host
是传入的请求标头主机example.com
更新
正如Louis Chatriot在评论中指出的那样,较新版本的Nginx已将$host
替换$host
$http_host
,在以前的版本中,该$http_host
返回example.com:port
但现在返回example.com
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.