У меня есть сервер chef, работающий на машине (прослушивающий порт 4000), и я хотел бы получить к нему доступ через SSL. Для этого я настроил обратный прокси-сервер Apache (прослушивание порта 4001). Настройка Apache выглядит так (имя моего компьютера заменено на www.example.com)
Listen 4001
<VirtualHost *:4001>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
ProxyRequests Off
ProxyPreserveHost On
<Proxy http://localhost:4000*>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:4000/
ProxyPassReverse / http://localhost:4000/
ProxyPassReverse / http://www.example.com:4000/
ProxyPassReverse / http://www.example.com:4001/
CustomLog ${APACHE_LOG_DIR}/chef.access.log common
ErrorLog ${APACHE_LOG_DIR}/chef.error.log
</VirtualHost>
Проблема в том, что URL-адреса в JSON, возвращаемые вызовами chef API, имеют http вместо https. Например, они выглядят так:
http://www.example.com:4001/sandboxes/a25fa2615d3d4dbd91e91a5e3a76c0ea
Вместо:
https://www.example.com:4001/sandboxes/a25fa2615d3d4dbd91e91a5e3a76c0ea
Один из примеров - это выполнение POST для /sandboxes
, чтобы создать новую песочницу, которая создала ссылку выше. Это ломает такие вещи, как попытка использовать нож для загрузки кулинарных книг.
Из того, что я могу сказать, шеф-сервер создает метод , который вызывается /sandboxes
POST вызывает вспомогательный метод Merb absolute_url для генерации URL.
На данный момент, я поставлен в тупик о том, как решить эту проблему. Нужно ли как-то изменить конфигурацию обратного прокси-сервера Apache? Это опция конфигурации на сервере chef? Или что-то еще?