#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