【转载】如何解决 nginx proxy_pass 使用变量 $arg 404 ?

发布时间 2023-08-28 21:49:55作者: java.matt

为什么

location /auth0/ {
      proxy_pass https://cdn.eu.auth0.com/;
} 

这样就可以
但是

location /auth0/ {
      proxy_pass https://$arg_host/;
} 

就404
$arg_host === cdn.eu.auth0.com

 

 

proxy_pass 是用了变量的话, nginx就不会自动添加 path 到 host 后面
例如 访问 /auth0/xxxx

如果无变量的, 转发地址就是 https://cdn.eu.auth0.com/xxxx;

有变量的话转发地址 就只是 proxy_pass 的内容, https://$arg_host/, 需要手动写上其他信息 path query 等等;

改造

location ~* /auth0/(.*) {
    proxy_pass https://$arg_host/$1$is_args$args;
    # $1 就是 (.*); $is_args 是 "?"; $args 是全部 query
}