Я хочу настроить обратный прокси-сервер nginx, чтобы упростить некоторые предстоящие перемещения серверов и реализации с балансировкой нагрузки в наших приложениях. Поскольку все наши серверы относятся к IIS, чувствительность к регистру не была проблемой, но теперь с nginx это стало для меня одним из них. Я просто хочу переписать, независимо от случая.
Примечания по инфраструктуре:
Я не могу настроить свое местоположение без учета регистра из-за следующей ошибки:
nginx: [emerg] «proxy_pass» не может иметь часть URI в местоположении, заданном регулярным выражением, или внутри именованного местоположения, или внутри оператора «if», или внутри блока limit_except в /etc/nginx/sites-enabled/test.conf : 101
Основная часть моего файла conf, в котором я пытаюсь обработать перезапись, выглядит следующим образом
location /svc_test {
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header host $http_host;
proxy_pass http://backend/serviceSite/WFCService.svc;
}
location ~* /test {
rewrite ^/(.*)/$ /svc_test/$1 last;
}
Это местоположение / test, которое я не могу понять. Если я позвоню http://nginxserver/svc_test/help
Страница справки WCF отображается правильно, и я могу выполнять все доступные вызовы REST. С моей стороны это ДОЛЖНО быть тупой проблемой с регулярным выражением, но я пробовал несколько вариантов, и все, что я мог получить, - это 404 или 500 ошибок от nginx. Это НЕ ракетостроение, может ли кто-нибудь указать мне правильное направление, чтобы я мог выглядеть как идиот и просто двигаться дальше?
Последнее правильное регулярное выражение, которое привело меня туда, куда я хотел, это
rewrite ^/([^/]*)(.*)$ /svc_test$2;
и это дало следующие результаты:
Я (очевидно) далек от того, чтобы свободно владеть регулярными выражениями, поэтому это может быть не оптимальный способ обработки перезаписи без учета регистра, но он делает все, что я хотел выполнить. Единственное, что я хотел бы добавить в какой-то момент, это rewrite / test / to / test, чтобы предотвратить любые страницы с ошибками, но это не повлияет на вызовы служб.