Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Rundeckの前段にnginxを配置してhttps化する

More than 3 years have passed since last update.

はじめに

RundeckはデフォルトだとWebの管理画面はhttpなんだけど、まともに使うならhttps化しておきたい。

いちおう、Rundeck単体でもSSLの設定することは可能っぽいんだけど、
http://rundeck.org/docs/administration/configuring-ssl.html

見るからにちょっと、めんどくさそうで、Rundeck初心者には敷居が高そうである。

ところで、Rundeckの前段にnginxを配置してhttps化する構成なら大体nginxの知識+αでなんとかなりそうなので、nginxでSSL復号化する構成にしてみる。

RundeckのSSL復号化をnginxにオフロードする

前段のnginxでSSL復号化する構成については、公式wikiに以下のような簡単な説明があるんだけど、
https://github.com/rundeck/rundeck/wiki/FAQ#can-i-do-ssl-offloading

Yes, If you have load balancer or reverse proxy, you can let them handle SSL and just do http between them and RunDeck servers:
* Set up RunDeck as http
* in profile file, add option -Drundeck.jetty.connector.forwarded=true to RDECK_JVM
* Set framework.rundeck.url and grails.serverURL to use https

簡単すぎである。

これを読み解いて何を言ってるかを理解したので、補足説明しておく。

  • Set up RunDeck as http

これは、読んだまま、普通にhttpの構成として、Rundeckをセットアップする。

  • in profile file, add option -Drundeck.jetty.connector.forwarded=true to RDECK_JVM

これは /etc/rundeck/profileRDECK_JVM という起動オプションを設定している変数があるので、 それに -Drundeck.jetty.connector.forwarded=true を追加しろということ。

...

RDECK_JVM="-Djava.security.auth.login.config=$JAAS_CONF \
           -Dloginmodule.name=$LOGIN_MODULE \
           -Drdeck.config=$RDECK_CONFIG \
           -Drundeck.server.configDir=$RDECK_SERVER_CONFIG \
           -Dserver.datastore.path=$RDECK_SERVER_DATA/rundeck \
           -Drundeck.server.serverDir=$RDECK_INSTALL \
           -Drdeck.projects=$RDECK_PROJECTS \
           -Drdeck.runlogs=$RUNDECK_LOGDIR \
           -Drundeck.config.location=$RDECK_CONFIG/rundeck-config.properties \
           -Djava.io.tmpdir=$RUNDECK_TEMPDIR \
           -Drundeck.server.workDir=$RUNDECK_WORKDIR \
           -Dserver.http.port=$RDECK_HTTP_PORT \
           -Drundeck.jetty.connector.forwarded=true"
  • Set framework.rundeck.url and grails.serverURL to use https

これは /etc/rundeck/framework.propertiesframework.rundeck.url のスキームを https にしてねというのと、

/etc/rundeck/framework.properties
...

framework.server.name = localhost
framework.server.hostname = localhost
framework.server.port = 4440
framework.server.url = http://rundeck.example.com:4440
framework.rundeck.url = https://rundeck.example.com

/etc/rundeck/rundeck-config.properties にある grails.serverURL のスキームも https にしてね

/etc/rundeck/rundeck-config.properties
...

# change hostname here
grails.serverURL=https://rundeck.example.com

ということらしい。

あとはnginxのSSLを復号化する設定はこんなかんじ。SSL証明書の作り方とかは割愛。特にRundeck関係ないので知らなければぐぐってくれ。

/etc/nginx/nginx.conf
...

http {
    ....

    server {
        listen 443;
        set_real_ip_from   '10.0.0.0/8';
        real_ip_header     X-Forwarded-For;
        proxy_set_header   Host $host;
        proxy_set_header   X-Forwarded-Proto https;

        ssl on;
        ssl_certificate /etc/nginx/keys/server.crt;
        ssl_certificate_key /etc/nginx/keys/server.key;

        server_name rundeck.example.com;
        ....

        location / {
            proxy_pass http://rundeck:4440;
        }
    }
}

これで https://rundeck.example.com でアクセスできるようになった。

crowdworks
21世紀の新しいワークスタイルを提供する日本最大級のクラウドソーシング「クラウドワークス」のエンジニアチームです!
https://crowdworks.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away