У меня есть этот прокси-сервер в моей конфигурации 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';
}
}
Я хочу прокси_пасс /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
Я хочу прокси_пасс
/content
к$address1
но я хотел бы proxy_pass любой другой/content/something_else
к$address2
это возможно в nginx?
Да. Вы можете использовать location = /content
ж / $address1
, и location /content
ж / $address2
; это была бы предпочтительная конфигурация, особенно если эти два адреса не так уж много разделяют.
Вам нужно добавить второй блок, например:
location ~ ^/content/.+$ {
proxy_set_header Host $proxy_host;
proxy_pass $address2;
....
}
nginx будет использовать этот блок, если запросы соответствуют регулярному выражению, то есть если запросы начинаются с /content/
.