【发布时间】:2019-12-31 17:38:20
【问题描述】:
我正在使用 Docker 的服务发现设置 Nginx。我的服务名称是webAdmin。
当前 Nginx 配置的相关部分读取
resolver 127.0.0.11 valid=10s; # Docker DNS server
if (!-f $request_filename) {
set $upstream_admin_server webAdmin:8000;
proxy_pass http://$upstream_admin_server;
break;
}
当访问适当的服务器时,Nginx 返回 404。日志显示 Nginx 正在尝试解析我的服务名称的小写版本。
2019/08/26 21:53:46 [error] 3756#3756: *1569 webadmin could not be resolved (3: Host not found), client: 10.0.0.29, server: admin.mysite.com, request: "GET /favicon.ico HTTP/1.1", host: "admin.mysite.com"
当我避免使用配置读取的变量时
resolver 127.0.0.11 valid=10s; # Docker DNS server
if (!-f $request_filename) {
proxy_pass http://webAdmin:8000;
break;
}
Nginx 然后能够解析服务名称并正确路由我的请求。
我尝试使用单引号和双引号,但似乎都没有任何效果。 set 的 Nginx 文档似乎没有提供任何线索。
为什么我的变量被转换为小写?
【问题讨论】:
-
你使用的是哪个基础镜像和 nginx 版本?
-
基础 docker 镜像是从
nginx:1.15.9拉取的。其中使用 Nginx 版本 1.15.12。 -
你可以试试我贴的图,一定能解决你的问题
标签: docker nginx nginx-config service-discovery