I'm setting up Nginx using Docker's service discovery. My service name is webAdmin
.
Relevant section of the current Nginx config reads
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;
}
When visiting the appropriate server, Nginx returns a 404. The logs reveal that Nginx is attempting to resolve a lower case version of my service name.
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"
When I avoid using a variable the config reads
resolver 127.0.0.11 valid=10s; # Docker DNS server
if (!-f $request_filename) {
proxy_pass http://webAdmin:8000;
break;
}
Nginx is then able to resolve the service name and correctly route my request.
I attempted to use quotes, single and double but neither seem to have any effect. The Nginx docs for set
don't seem to offer any clues.
Why is my variable being converted to lower case?