Пусть Nginx пройдет текущее местоположение - PullRequest
0 голосов
/ 03 октября 2018

У меня есть обратный прокси-сервер nginx на моем сайте в IIS, и вот моя конфигурация nginx:

ОБНОВЛЕНИЕ

upstream backend  {
  server 43.128.77.101;
}

server {
  server_name domain.subdomain.com;   

  location /products {
    if ($query_string ~ Jeans){
      return 301 /get-all-products/?filter=jeans;
    }
    if ($query_string ~ Shirts){
      return 301 /get-all-products/?filter=shirts;
    }
    if ($query_string ~ Hats){
      return 301 /get-all-products/?filter=hats;
    }
  }

  location / {  
    proxy_pass  http://backend;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }   
}

Перенаправляет со страницы /productsна определенные URL-адреса по строке запроса.Но для страницы /products-available происходит сбой с ошибкой 404. Журнал ошибок Nginx содержит ошибку:

"/ usr / share / nginx / html / products-available" не удалось (2: такой файл или каталог не найдены))

Страница /products-available не требует перенаправлений.Я хочу, чтобы он проходил на бэкэнд-сервере IIS как есть.Как я могу сказать nginx пройти через это?Что я делаю не так?

Спасибо.

1 Ответ

0 голосов
/ 03 октября 2018

Это может быть связано с тем, что вы определяете поведение Nginx только для заданного пути (/products).

Если вы хотите определить поведение по умолчанию для запросов Nginx, которые не соответствуют пути / products(например, / products-available) после раздела текущего местоположения вы можете добавить следующее, чтобы прокси-запрос любого другого пути к другому приложению / порту.

location / {
    proxy_pass http://127.0.0.1:3000;
}

Более подробную информацию об отправке запроса можно получитьразличное применение в https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/#passing-a-request-to-a-proxied-server

...