Я настроил Apache для отправки запросов на camera.example.com на веб-камеру, доступную через IP-адрес, не связанный с сервером, на котором работает Apache, с помощью ProxyPass:
[камера] - [nat / prt frwrd] - [11.22.33.44] - [интернет] - [веб-сервер]
Соответствующая запись в директиве виртуального хоста Apache для example.com:
<VirtualHost *>
ServerName camera.example.com
ProxyRequests Off
ProxyPass / http://11.22.33.44/
ProxyPassReverse / http://11.22.33.44/
</VirtualHost>
Работает как шарм, правда, камера не всегда включается. В этом случае вместо того, чтобы Apache выдавал ошибку «не найдено» при посещении моей камеры, я бы хотел, чтобы он обслуживал альтернативную веб-страницу.
Можно ли было бы установить какой-то «запасной» адрес на случай, если первый (адрес камеры) недоступен?
вы можете использовать нагрузку балансирующая способность Apache, он также имеет встроенную автоматическую отработку отказа.
ваша конфигурация будет выглядеть следующим образом:
ProxyPass / balancer://hotcluster/
<Proxy balancer://hotcluster>
BalancerMember http://addres.of.the.camera timeout=15 retry=300
BalancerMember http://address.of.backup.server status=+H
</Proxy>
вы просто помечаете backup-server знаком + H - горячий резерв. пока камера отвечает [в тайм-аут сек] - на него идет трафик; если нет - apache начинает отправлять трафик на резервную машину и будет проверять камеру каждые повторить попытку секунд.
Если это общедоступный IP-адрес, некоторые поставщики DNS будут проверять ваш IP-адрес и переключаться на резервный IP-адрес, если он недоступен. Для этого мы используем dnsmadeeasy.com.
Однако следует помнить, что он может проверять только каждые 5 минут или около того, поэтому переключение при отказе и восстановление после отказа не происходит мгновенно.