
Docker中Nginx反向代理配置详解:精准代理API接口
在Docker环境下使用Nginx进行反向代理时,常常会遇到代理路径不匹配的问题。例如,希望通过http://1.1.1.1/api/x/y访问http://a.x.com/x/y,但实际只能访问到http://a.x.com/。
以下是一个常见的错误配置:
server {
location /api/ {
proxy_pass http://a.x.com/;
}
}
问题在于proxy_pass指令的用法。上述配置将所有/api/开头的请求都代理到http://a.x.com/,忽略了请求路径中的剩余部分。
正确配置:
为了准确地代理到/x/y接口,需要使用$request_uri变量:
server {
location /api/ {
proxy_pass http://a.x.com/$request_uri;
}
}
$request_uri变量包含完整的请求URI,包括路径和查询参数。这样,http://1.1.1.1/api/x/y的请求将被正确地代理到http://a.x.com/x/y。 通过此修改,Nginx将正确地转发请求路径,确保精准访问目标API接口。










