Вариант публикации вебхуков через реверс-прокси на базе веб-сервера Apache.
Первым делом активируем модули Apache - ssl, proxy и proxy_http.
sudo a2enmod ssl proxy proxy_http
Рестартуем Apache
sudo systemctl restart apache2
и проверяем, что модули загрузились
sudo apachectl -M | grep 'ssl\|proxy'
В ответе должно быть три строки.
proxy_module (shared)
proxy_http_module (shared)
ssl_module (shared)
Создаем конфигурационный файл нового виртуального сервера. Я назвал его webhooks.
sudo nano /etc/apache2/sites-available/webhooks.conf
Содержимое файла (с комментариями).
<IfModule mod_ssl.c>
<VirtualHost *:443>
# e-mail
ServerAdmin
[email protected]
# Доменное имя
ServerName majordomo.keenetic.pro
# Рабочая директория
DocumentRoot /var/www/webhooks
# Разграничение доступа
<Directory *>
Options All -Indexes
Order deny,allow
deny from all
</Directory>
# Определяем, что и куда нужно перенаправить.
# URL авторизации (authorize.php)
<Location /modules/yandexhome/authorize.php>
ProxyPass
http://127.0.0.1/modules/yandexhome/authorize.php
ProxyPassReverse
http://127.0.0.1/modules/yandexhome/authorize.php
</Location>
# URL для получения и обновления токена (token.php)
<Location /modules/yandexhome/token.php>
ProxyPass
http://127.0.0.1/modules/yandexhome/token.php
ProxyPassReverse
http://127.0.0.1/modules/yandexhome/token.php
</Location>
# URL обработчика навыка (smarthome.php)
<Location /modules/yandexhome/smarthome.php>
ProxyPass
http://127.0.0.1/modules/yandexhome/smarthome.php
ProxyPassReverse
http://127.0.0.1/modules/yandexhome/smarthome.php
</Location>
# URL на директорию с картинками для формы авторизации
<Location /modules/yandexhome/img>
ProxyPass
http://127.0.0.1/modules/yandexhome/img
ProxyPassReverse
http://127.0.0.1/modules/yandexhome/img
</Location>
# URL на директорию со стилями для формы авторизации
<Location /modules/yandexhome/css>
ProxyPass
http://127.0.0.1/modules/yandexhome/css
ProxyPassReverse
http://127.0.0.1/modules/yandexhome/css
</Location>
# Включаем логи
ErrorLog ${APACHE_LOG_DIR}/error.webhooks.log
CustomLog ${APACHE_LOG_DIR}/access.webhooks.log combined
# Указываем пути к файлам SSL-сертификата
SSLCertificateFile /etc/apache2/ssl/webhooks/fullchain.pem
SSLCertificateKeyFile /etc/apache2/ssl/webhooks/privkey.pem
SSLCertificateChainFile /etc/apache2/ssl/webhooks/chain.pem
# АктивируемSSL
SSLEngine on
</VirtualHost>
</IfModule>
Здесь ключевые моменты это активация SSL и секции Location, в которых определются правила перенаправления входящего трафика.
Сохраняем и закрываем конфигурационный файл, затем создаем пустую рабочую директорию.
sudo mkdir /var/www/webhooks
Активируем новый виртуальный сервер
sudo a2ensite webhooks.conf
и обновляем конфигурацию Apache для применения изменений.
sudo systemctl reload apache2