Как настроить сервер Apache-Traffic-Server для пересылки http-запроса на удаленный сервер https? - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть esp8266, который напрямую отправлял http-запросы на http://fcm.googleapis.com/fcm/send, но, похоже, Google прекратил разрешать отправку запросов через http, мне нужно найти новое решение.

Я начал с того, чтобы esp8266 напрямую отправлял запрос через https, и хотя он работает на небольшом примере, объем памяти, необходимый для запроса https, слишком велик в моем полном приложении, и я в итоге вылетел.esp8266.Хотя есть еще несколько возможностей для изучения, которые могут позволить мне продолжать напрямую отправлять сообщения на сервер, я думаю, что я хотел бы решить эту проблему, отправив запрос через http на локальный «сервер» raspberry pi, и он должен отправитьзапрос через https.

Хотя я мог запустить небольшой веб-сервер и некоторый код для обработки запросов, похоже, что это именно то, что сервер трафика должен быть в состоянии сделать для меня.

Я думал, что это должен быть один лайнер.Я добавил следующий файл remap.config.

redirect http://192.168.86.77/fcm/send https://fcm.googleapis.com/fcm/send

, где 192.168.86.77 - локальный адрес моего малинового пи.

Когда я отправляю запросыhttp://192.168.86.77/fcm/send:8080 Я получаю следующее:

HTTP/1.1 404 Not Found
Date: Fri, 20 Sep 2019 16:22:14 GMT
Server: Apache/2.4.10 (Raspbian)
Content-Length: 288
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /fcm/send:8080 was not found on this server.</p>
<hr>
<address>Apache/2.4.10 (Raspbian) Server at localhost Port 80</address>
</body></html>

Я думаю, 8080 - правильный порт.Я предполагаю, что это не тот лайнер, который, как я думал, должен быть.

Это хорошо подходит для apache-traffic-controller?Может ли кто-нибудь указать мне, что я делаю неправильно и как правильно достичь своей цели?

Обновление:

На основе приведенного ниже ответа Майлза Либби мне нужно было сделать следующее обновление:код Arduino / esp8266.

Изменение:

http_.begin("http://fcm.googleapis.com/fcm/send");

Кому:

http_.begin("192.168.86.77", 8080, "http://192.168.86.77/fcm/send");

, где http_ - это экземпляр HTTPClient

И послеПри установке TrafficServer на мой Raspberry Pi мне нужно было добавить следующие две строки в /etc/trafficserver/remap.config

map http://192.168.86.77/fcm/send https://fcm.googleapis.com/fcm/send
reverse_map https://fcm.googleapis.com/fcm/send http://192.168.86.77/fcm/send

Обратите внимание, что строка reverse_map нужна только, если вы хотите получитьобратная связь от fcm, т.е. если сообщение было успешным или нет.

1 Ответ

1 голос
/ 21 сентября 2019

Я бы попробовал несколько изменений: - Я бы использовал карту: map http://192.168.86.77/fcm/send https://fcm.googleapis.com/fcm/send вместо перенаправления.redirect предназначен для того, чтобы отправить вашему клиенту 301, и тогда ваш клиент последует за ним, что звучит так, как если бы оно победило вашу цель.карта должна иметь ATS делать проксирование.- Я думаю, что ваш curl, возможно, был выключен - порт обычно идет после доменной части - например, curl "http://192.168.86.77:8080/fcm/send".(и, вероятно, лучше: curl -x 192.168.86.77:8080 "http://192.168.86.77:8080/fcm/send", так что порт не является частью переназначения.

...