我的 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 = /content
w/$address1
和location /content
w/ $address2
;这将是首选配置,特别是当两个地址没有太多共享时。
答案2
您需要添加第二个块,例如:
location ~ ^/content/.+$ {
proxy_set_header Host $proxy_host;
proxy_pass $address2;
....
}
如果请求与正则表达式匹配,即如果请求以 开头/content/
,则 nginx 将使用此块。