反向代理
静态/动态proxy_pass的配置区别
1.静态 proxy_pass:如果proxy_pass直接写固定域名(如proxy_pass repo.huaweicloud.com,无变量),Nginx 会在启动时解析该域名并缓存 IP,不需要额外配置 resolver; 2.动态 proxy_pass:如果配置中使用了变量(如proxy_pass repo.huaweicloud.com/rockylinux/… URL),此时 Nginx 会在请求阶段动态解析域名,但 Nginx 默认不会自动使用系统的 DNS,必须显式配置resolver指定 DNS 服务器,否则就会报 “no resolver defined to resolve xxx”。
Example:
resolver 114.114.114.114 valid=5 ipv6=off;
location ~ /rockylinux/(.*) {
proxy_pass https://repo.huaweicloud.com/rockylinux/$1;
}
上述配置中由于反向代理使用正则捕获了访问地址并使用变量$1传递给了proxy_pass,因此必须对DNS进行显式配置,否则会在访问时报错“no resolver defined to resolve ……”。