Назад | Перейти на главную страницу

Nginx перенаправляет root на один адрес, а остальные на другой

У меня есть этот прокси-сервер в моей конфигурации 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/.