nginx 出现这种情况存在很多种原因,我记录的只是针对我所在的场景下(请自行判断)
场景:
小程序发起请求--->nginx--->转发到后端web服务接口
nginx ,web服务都是docker 容器部署,下面是nginx配置信息
upstream xian {
server ip:端口;
}
server {
listen 80; # 监听的端口,通常是80(HTTP)或443(HTTPS)
server_name 你的域名; # 该server块服务的域名
location ~ ^(/[^/]*)?/actuator(/.*)?$ {
return 403;
}
location / {
# 配置代理行为
proxy_pass http://xian; # 使用之前定义的upstream
proxy_set_header Host $host; # 向后端服务器传递Host头
proxy_set_header X-Real-IP $remote_addr; # 向后端服务器传递真实客户端IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 同上,用于识别客户端的真实IP
proxy_set_header X-Forwarded-Proto $scheme; # 如果使用SSL,传递协议信息给后端
proxy_redirect off; # 关闭自动重定向处理,除非你需要Nginx处理重定向
}
}
产生 Connection refused情况是,当我将upstream 中的ip地址直接使用的是127.0.0.1:port,访问后端接口;
解决:
将127.0.0.1修改为域名,即可解决Connection refused问题
解惑:
因为我的nginx和web服务都是使用docker compose部署,且是分开单独部署,并且没有指定网段,导致他们并不在一个网段中,同样在docker 部署时指定同一网段,理论也可以解决(并没有验证过,有兴趣的可以自行验证)