Exploratory Collaboration Serverの圧縮ファイルを展開してできた、“exploratory” というディレクトリの直下にある “ssl” ディレクトリにSSL証明書ファイルと、秘密鍵ファイルを置きます。“ssl” ディレクトリがない場合は “ssl” という名前のディレクトリを作成してください。
以下、SSL証明書ファイルをfullchain.pem
、秘密鍵ファイルをprivkey.pem
であるとしてSSLの設定の説明を進めます。
“exploratory” ディレクトリの直下にある、docker-compose.ymlファイルのnginxの項目の中で、以下のような変更を行います。
- './ssl:/etc/nginx/ssl'
を追加します。- '8080:80'
といった行の代わりに、- '443:443'
とします。元の設定:
nginx:
image: 'nginx:1.15.0-alpine'
volumes:
- './default.conf:/etc/nginx/conf.d/default.conf:ro'
...その他の設定...
ports:
- '8080:80'
変更後の設定:
“exploratory” ディレクトリの直下にある、default.conf(nginxウェブサーバーの設定ファイル)を編集して、SSLを使用した設定にします。
listen 80
といった行の代わりに、listen 443;
とします。SSLを有効化するため、ssl on;
を追加します。また、SSL証明書ファイルと、秘密鍵ファイルの指定を以下のように追加します。設定の中のファイル名fullchain.pem, privkey.pemはご使用のファイル名に合わせて変更してください。
ssl on;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
サーバー内で生成するURLで使うプロトコルをhttpsにするため、proxy_set_header X-Forwarded-Proto http
の行を変更して、proxy_set_header X-Forwarded-Proto https
とします。
元の設定の例:
server {
listen 80;
server_name localhost;
client_max_body_size 100m; # increased this for data share.
location / {
proxy_pass http://exploratory:3000/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
}
}
変更後の設定の例:
スケジュールしたジョブの管理画面であるAgendashは、ポート番号3001でアクセスできますが、Collaboration Server自体にSSL(HTTPS)を使用すると、ブラウザがAgendashに対してもSSLでないと接続を拒否することがありますので、こちらも同時にSSLを設定することをおすすめします。
SSLの暗号化、復号化を行うnginxウェブサーバーで、ポート3001へのリクエストを受け取るようにするため、“exploratory” ディレクトリの直下にある、docker-compose.ymlファイルのnginxの項目の中で、portsの設定に、- '3001:3001'
を追加します。
元の設定:
nginx:
image: 'nginx:1.15.0-alpine'
...その他の設定...
ports:
- '443:443'
変更後の設定:
また、agendashが直接ポート3001へのリクエストを受け取らないようにしたいので、agendashの項目のports:
と- '3001:3001'
の行は削除またはコメントアウトします。
元の設定:
agendash:
image: 'scheduler:5.5.4.0'
depends_on:
- mongodb
volumes:
- './tmp:/tmp'
ports:
- '3001:3001'
変更(コメントアウト)後の設定:
以下のような、nginxウェブサーバーでポート3001番でSSLを使用して、リクエストをAgendashに渡すような設定を“exploratory” ディレクトリの直下にある、default.confの末尾に追加します。設定の中のファイル名fullchain.pem, privkey.pemはご使用のファイル名に合わせてください。
server {
listen 3001;
server_name localhost;
ssl on;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
location / {
proxy_pass http://agendash:3001/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
変更前の設定(Collaboration Server自体のSSL設定のみ):
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
client_max_body_size 100m; # increased this for data share.
location / {
proxy_pass http://exploratory:3000/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
変更後の設定(AgendashのSSL設定を末尾に追加後):