Есть два сервиса:
1) Первый сервис - это малоизвестная PBX которая умеет делать к примеру GET запрос когда у она получила телефонный звонок. Но она умеет делать запрос только на АйПи (а по домену не умеет) и только HTTP а HTTPS не умеет.
2) Второй сервис - это zapier.com который умеет принимать данные в GET запросе и делать потом с ними много чего интересного. Но запросы им нужно слать на домен hooks.zapier.com и не факт что у него не меняется IP, и они принимают только HTTPS.
Нужно их подружить. Я думаю что смогу сделать это все на Python/Flask но прежде чем я начну изобретать велосипеды, хотелось бы узнать нет ли готового инструмента который я бы мог поднять на каком нибудь digitalocean и порешать все проблемы :). С надеждой смотрю на Nginx в котором я все равно ничего не понимаю.
ЗЫ Еще хотелсоь бы услышать с какими проблемами я могу столкнутся если буду делать с HTTP HTTPS?
Я в принципе начал читать доку по nginx но не все понятно. Вас не затруднит прокоментировать ваше решение:
- что делает троеточие после location Я так понимаю это какой-то плейсхолдер?
- что делает proxy_pass?
Если директива proxy_pass указана с URI, то при передаче запроса серверу часть нормализованного URI запроса, соответствующая location, заменяется на URI, указанный в директиве:
Троеточие - да, если PBX пытается стучаться по определённому URL, можно обрезать с помощью регулярки, если нет, то прокси делать исключительно для неё (если есть другие сайты, то в listen должна быть пара ip:port) и поставить просто "/"
proxy_pass непосредственно проксирует полученный запрос на указанный URI.
upstream zapier {
server hooks.zapier.com;
}
# Define the parameters for a specific virtual host/server
server {
# Configure NGINX to proxy HTTP requests to the upstream server (Zapier)
location / {
# Define the location of the proxy server to send the request to
rewrite ^ /hooks/catch/_id_/-id_/$1;
proxy_pass https://zapier;
}
}
chupasaurus: Я его изменил перед постингом но все равно спасибо :)
Я правильно понимаю что когда rewrite делает regexp то он оперирует уже только частью адреса которая указывает путь на сервере без адреса самого сервера?
Я так понимаю что проблема в том, что nginx перенаправляет не на https://hooks.zapier.com а на https://34.231.79.116:80 - во первый откуда то берется номер порта который естественно не работает потому что нужен 443, а во вторых ресолвится DNS
-