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

Как переписать два URL-адреса на одну и ту же конечную точку через nginx?

У меня две конечные точки HTTP, как показано ниже

http://me11.example.local/api/foo

http://me11.example.local/api/boo

Я хочу перенаправить их на две разные конечные точки. В моем конфигурационном файле он работает только для одного URL. как мне настроить это для обеих конечных точек? мой файл конфигурации Nginx выглядит следующим образом

server {
  listen 80;
  listen [::]:80;

  server_name me11.example.local;

  location /{
   rewrite ^/api/foo / last;
   proxy_pass http:localhost:5000;
      }
 location /{
   rewrite ^/api/boo / last;
   proxy_pass http:localhost:6000;
      }
}

С этой конфигурацией я получил следующую ошибку

duplicate location and so on

Если я удалю один блок местоположения, он будет работать нормально, но мне нужно, чтобы он работал для обеих конечных точек.

Как мне решить эту проблему?

вы можете попробовать что-то подобное:

server {
    listen 80;
    listen [::]:80;

    server_name me11.example.local;

    if ($request_uri = "/api/foo") {
        rewrite ^/api/foo / last;
        proxy_pass http:localhost:5000;
    }
    if ($request_uri = "/api/boo") {
        rewrite ^/api/boo / last;
        proxy_pass http:localhost:6000;
    }
}

но остерегайтесь if в nginx: https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/

здесь вы можете проверить переменные nginx.conf: http://nginx.org/en/docs/varindex.html

С Уважением,