Nginx 将根转发到一个地址,其余转发到其他地址

Nginx 将根转发到一个地址,其余转发到其他地址

我的 nginx 配置中有这个代理传递。

location /content {
proxy_set_header Host $proxy_host;
proxy_pass $address1;
if ($request_method = 'OPTIONS') {
   add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
   add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
   add_header 'Access-Control-Max-Age' 1728000;
   add_header 'Content-Type' 'text/plain charset=UTF-8';
   add_header 'Content-Length' 0;
   return 204;
}
if ($request_method = 'POST') {
   add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
   add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}
if ($request_method = 'GET') {
   add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
   add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}

}

我想将 proxy_pass 传递/content给其他任何机构$address1,但是我想将 proxy_pass 传递给其他任何/content/something_else机构,$address2这在 nginx 中可以实现吗?

例如,如果我点击,http://www.example.com/content?some_other_param=value它将被转发到http://www.content.com,但如果我点击,http://www.example.com/content/article?some_param=value它将点击http://www.different_content.com

答案1

我想将 proxy_pass 传递/content给其他任何机构$address1,但是我想将 proxy_pass 传递给其他任何/content/something_else机构,$address2这在 nginx 中可以实现吗?

是的。 您可以使用location = /contentw/$address1location /contentw/ $address2;这将是首选配置,特别是当两个地址没有太多共享时。

答案2

您需要添加第二个块,例如:

location ~ ^/content/.+$ {
    proxy_set_header Host $proxy_host;
    proxy_pass $address2;
    ....
}

如果请求与正则表达式匹配,即如果请求以 开头/content/,则 nginx 将使用此块。

相关内容