我正在尝试使用 nginx 作为代理,将所有调用路由到 docker 网络中的其他服务。当我对子域进行硬编码时,重新路由会起作用
server {
listen 80;
server_name sub1.example.com;
location / {
proxy_pass http://sub1.example.com;
}
}
但是一旦我开始使用正则表达式,它就会开始返回 301,就像找不到主机一样。
server {
listen 80;
server_name ~^((?<subdomain>.*)\.)(?<domain>[^.]+)\.(?<tld>[^.]+)$;
location / {
proxy_pass $scheme://${subdomain}.${domain}.${tld};
}
}
我收到 502 Bad Gateway(未定义解析器来解析 sub1.example.com)。我应该使用哪个解析器来将其全部保留在 docker 本地?
这是我的 curl 响应 curl -vhttp://sub1.example.com/ * 尝试 127.0.0.1... * 连接到 sub1.example.com (127.0.0.1) 端口 80 (#0)
GET / HTTP/1.1 主机:sub1.example.com 用户代理:curl/7.49.1 接受:/
< HTTP/1.1 502 Bad Gateway < Server: nginx/1.11.6 < Date: Tue, 13 Dec 2016 21:47:22 GMT < Content-Type: text/html < Content-Length: 173 < Connection: keep-alive < <html> <head><title>502 Bad Gateway</title></head> <body bgcolor="white"> <center><h1>502 Bad Gateway</h1></center> <hr><center>nginx/1.11.6</center> </body> </html> * Connection #0 to host sub1.example.com left intact
这是错误日志
proxy | 172.19.0.1 - - [13/Dec/2016:21:55:23 +0000] "GET / HTTP/1.1" 502 173 "-" "curl/7.49.1"
proxy | 2016/12/13 21:55:23 [error] 13#13: *6 no resolver defined to resolve sub1.example.com, client: 172.19.0.1, server: ~^((?<subdomain>.*)\.)(?<domain>[^.]+)\.(?<tld>[^.]+)$, request: "GET / HTTP/1.1", host: "sub1.example.com"