在Docker中运行的Nginx无法将请求代理到本地网络HyperHDR服务器

i1icjdpr  于 2023-06-05  发布在  Nginx
关注(0)|答案(1)|浏览(459)

我无法通过Nginx代理请求到本地网络上运行的服务器。请求不会通过,最终会被请求者超时。
我试图调用一个json-rpc API(HyperHDR),它与请求软件(在Node.js上运行的Homebridge)设置的Content-Length头不兼容,所以我将Nginx设置为删除不兼容头的代理。
如果我直接从Docker容器内部和外部 curl 服务器,而不是通过Nginx,则连接可以工作。不知道是不是我的nginx.conf有问题?接收端的日志中没有任何内容,其他请求也是如此,所以看起来请求没有通过。我可以看到请求在被代理后(使用正确的代理URL)在Nginx日志中超时,所以请求确实到达了Nginx,但由于某种原因没有完全通过。
nginx.conf

events {}

http {
  server {
    listen 8080;
    listen [::]:8080;
    error_log /var/log/nginx/error.log debug;

    location /json-rpc {
      proxy_pass http://192.168.1.205:8090/json-rpc;
      proxy_set_header Host $http_host;
    }
  }
}

Dockerfile

FROM nginx:latest
COPY nginx.conf /etc/nginx/conf.d/default.conf

我已经三次检查了proxy_pass中指定的IP、端口和端点是正确的--调用它可以和上面提到的Curl一起工作。

qq24tv8q

qq24tv8q1#

这个问题与Connection头有关。如this solution中所示清除它解决了问题。

相关问题