上游服务器中的 Nginx http 前缀

上游服务器中的 Nginx http 前缀

我正在尝试使用 nginx 代理传递到两个 docker 容器。这是我的上游配置文件:

upstream api_servers {
  server http://192.168.49.4:49155;
  server http://192.168.49.4:49156;
}

这是我尝试加载时得到的结果:

nginx: [emerg] invalid host in upstream "http://192.168.49.4:49155" in /etc/nginx/conf.d/api_upstream.conf:3
nginx: configuration file /etc/nginx/nginx.conf test failed

一旦我删除 http:// 前缀,错误就不再发生。这是为什么?

答案1

上游块是具有可选状态池和连接限制的服务器列表。必须在指令中指定用于加入这些服务器的协议proxy_pass

upstream api_servers {
    server 192.168.49.4:49155;
    server 192.168.49.4:49156;
}

server {

    [ ... ]

    location /foo/ {
        proxy_pass http://api_servers/;
    }

}

答案2

语法:服务器地址 [参数];地址可以指定为域名或 IP 地址,带有可选端口,也可以指定为在“unix:”前缀后指定的 UNIX 域套接字路径。我认为您应该喜欢查看“http://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream“。

答案3

我认为主机 [api_servers] 无效,因为下划线 ( _ ) 在域名中永远不是有效字符。删除上述 ngix 配置中的 ( _ ) 后,它开始对我起作用了。

例如:上游 apiservers {服务器 192.168.49.4:49155;服务器 192.168.49.4:49156;}

服务器 {

location /foo/ {
    proxy_pass http://apiservers/;
}

}

相关内容