マシン上で実行されているシェフサーバー(ポート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>
問題は、chef API呼び出しによって返されるJSONのURLに、httpsではなくhttpが含まれていることです。たとえば、次のようになります。
http://www.example.com:4001/sandboxes/a25fa2615d3d4dbd91e91a5e3a76c0ea
それ以外の:
https://www.example.com:4001/sandboxes/a25fa2615d3d4dbd91e91a5e3a76c0ea
1つの例は、POSTを実行/sandboxes
して新しいサンドボックスを作成する場合です。これにより、上記のリンクが作成されます。これは、ナイフを使用して料理本をアップロードしようとするようなことを壊します。
私の知る限り、 POSTによって呼び出されるchef server createメソッドは、 Merbabsolute_urlヘルパーメソッドを呼び出してURLを生成します。/sandboxes
この時点で、私はこの問題を修正する方法について困惑しています。どういうわけか、Apacheリバースプロキシ設定を変更する必要がありますか?chefサーバーの構成オプションですか?または、他の何か?