к ури.
Хотел так:
location ~* ^/api/robot/(ping|login|uploadbdf|GetDeviceStatus) {
proxy_pass http://127.0.0.1:9011/ecg-device;
} но nginx не разрешает ури-проксирование в регулярнутых location. rewrite поможет или это не из той оперы? или остаётся только делать 4 простых локейшна и в них uri-part добавлять?
Поможет. rewrite ^(.*) /ecg-device$1 break; Или даже так: rewrite ^ /ecg-device$uri break; И потом proxy_pass http://127.0.0.1:9011;
нафига rewrite-то?
у тебя там регулярка в ,location-е, поэтому надо capture group использовать в proxy_pass
Мы обсуждали это с тобой уже десяток раз. Это наилучший способ изменить URI, который будет передан на апстрим внутри именованного или заданного регулярным выражением location'а. Потому что то, что предлагаешь ты, в общем случае потребует resolver'а. В данном случае не потребует, потому что апстрим указан по IP.
где там resolver-то?
пробовал реврайт, но до break не додумался, пасиба
а resolver кстати синхронно резолвит? На каждое истечение ttl или valid параметра?
Асинхронно, он не блокирует worker-процесс. Именно поэтому nginx не может использовать системный и его надо указывать явно. Но это всё равно какие-то лишние периодические задержки.
а откуда они возьмутся? первый раз оно резолвится на старте, добавляется в апстрим, потом независимо от запросов, резолвится каждые ttl/valid секунд. Если не зарезолвилось из-за ошибки, то просто используется старый адрес, вместо остановки запросов. Задержек по идее нет никаких
Если в этом смысле асинхронно, то я не уверен. Надо уточнять.
вот и мне интересно, вряд-ли же по истечении ttl/valid он блокирует запрос, чтобы сделать резолв. Иначе бы были тормоза каждые ttl секунд
Вопрос хороший конечно. Можно проверить в какой-то песочнице, задать внутренний dns и смотреть его логи, придёт к нему запрос только когда прилетит запрос на nginx или нет.
что там "на старте резолвится", разверни мысль
в этом случае не используется директива resolver
если укажешь, используется. Более того, без нее ipv6 и не отрубишь
вот тут ты описал два _разных процесса резолвинга
два процесса, и после обоих зарезолвенный адрес попадает в апстрим
Обсуждают сегодня