nginx proxy_pass с восходящим потоком не работает и выдает ошибку 404

#nginx #iis #url-rewriting #rate-limiting

#nginx #iis #перезапись URL-адреса #ограничение скорости

Вопрос:

Я настроил IIS с помощью NGINX следующим образом:

public_facing_IIS —> NGINX[ограничение скорости] —> internal_IIS

Пользователи переходят по общедоступному URL-адресу веб-сайта, который перенаправляет запрос на NGINX, который затем перенаправляет его на внутренний сервер IIS. Причина этой цепочки в том, что мне нужно ограничить количество обращений от NGINX к internal_IIS определенным числом — я не хочу ограничения скорости в общедоступном конце url. При этом при настройке восходящего потока с помощью прокси-прохода я получаю ошибку 404.

Таким образом, это работает для любой ссылки на общедоступном веб-сайте IIS, но как только я попадаю в path / Billing /, я получаю ошибку 404

 http{

    upstream myupstream {
            server internal.IISwebsite:80;
    }


  server {
        listen       81;
        server_name  internal.nginx;

        location / {
            proxy_pass http://internal.IISwebsite;
        }

        location /Billing/ {
            limit_req zone=mylimit burst=20;

            proxy_set_header Host $host;
            proxy_pass http://myupstream/;
        }
   }
  

}

Я пробовал это даже с обходом URL-адреса external_IIS и прямым вызовом internal.nginx:81. Все это хорошо работает для любого другого URL на http://internal.nginx:81 . В ту минуту, когда я нажал http://internal.nginx:81/Billing / — это когда я получаю сообщение об ошибке http 404.

Комментарии:

1. Проверьте, какой тип 404 вы получаете, support.microsoft.com/en-ca/help/943891/… Вам также необходимо проверить привязки сайта на вышестоящем сервере, иначе IIS не сможет перенаправить запрос на этот сайт.

2. Я не мог видеть ничего по этой ссылке, что соответствовало бы тому, что я видел в журналах. Здесь ниже приведена строка файла журнала, о которой идет речь:

3. 127.0.0.1 - - [16/Apr/2019:17:03:54 -0600] "GET /Billing/Index.aspx?q__=9g D9urSlVgGj8K4To1cWcfV4IUvdjR3 HTTP/1.1" 404 3527 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"

4. Привязки на вышестоящем сервере имеют тип = http, IP-адрес = Все неназначенные, порт = 80, имя хоста = внутренний. IISwebsite