コンテンツにスキップ

Dockerでのrpxyの実行

Docker用環境変数

Docker固有の環境変数がいくつかあります。

変数説明
HOST_USER (デフォルト: user)コンテナ内でrpxyを実行するユーザー名。
HOST_UID (デフォルト: 900)HOST_USERUID
HOST_GID (デフォルト: 900)HOST_USERGID
LOG_LEVEL (デフォルト: info)ログレベル。debuginfowarnまたはerror
LOG_TO_FILE (デフォルト: false)/rpxy/log/rpxy.log/rpxy/log/access.logへのファイルログをlogrotateを使用して有効にします。有効にする場合はDockerボリュームオプションで/rpxy/logをマウントしてください。

必要なのは、config.toml/etc/rpxy.tomlとしてマウントし、証明書/秘密鍵をDockerボリュームオプションで任意の場所にマウントするだけです。鍵と証明書のファイルパスはDockerコンテナ内のパスである必要があります。

LOG_TO_FILEオプションについて、ログディレクトリとファイルはホストマシン上でHOST_UID:HOST_GIDHOST_USERが所有します。そのため、HOST_USERHOST_UIDHOST_GIDはホストでrpxyのDockerコンテナを実行するユーザーと同じにする必要があります。
ファイルの変更を動的に追跡するには、ファイルではなく./rpxy-config/などのディレクトリを/rpxy/configにマウントする必要があります。これはDockerの制限です。/etc/rpxy.tomlではなく/rpxy/configにディレクトリをマウントできます。/etc/rpxyにマウントされたファイルは/rpxy/configにマウントされたディレクトリよりも優先されます。

例についてはdocker-compose.ymlまたは次のセクションを参照してください。

非特権モードでwell-knownポート(80, 443)を公開せずにHTTPSリダイレクション用カスタムポートを設定する

セキュリティ上の理由から、well-knownポートを公開せずに非特権モードでrpxyを実行したい場合があります。その場合、HTTPSリダイレクション用のカスタムポートを指定する必要があります。

コンテナマネージャーがホストのポートA(例: 80/443)をコンテナのポートB(例: 8080/8443)にマッピングする場合、rpxylisten_portlisten_port_tlsにポートBを設定する必要があります。

しかし、一部のバックエンドアプリにhttp_redirection=trueを設定したい場合、rpxyはデフォルトでポートBでリダイレクションレスポンス301を発行しますが、これはコンテナ外からアクセスできません。

この問題を回避するため、config.tomlhttps_redirection_portを指定してリダイレクションレスポンス用のカスタムポートを設定できます。この場合、https_redirection_portにポートAを設定すると、リダイレクションレスポンス301がポートAで発行されます。

関連する設定の例は以下の通りです。

listen_port = 8080            # コンテナ内の`rpxy`はポート8080でリッスン
listen_port_tls = 8443        # コンテナ内の`rpxy`はポート8443でTLSをリッスン
https_redirection_port = 443  # `rpxy`はポート443でリダイレクションレスポンス301を発行

アップストリームTLS接続用のカスタムCA

カスタム証明書を追加するには、非webpkiイメージを使用する必要があります。コンテナ内の/usr/local/share/ca-certificatesに、myca.crtのようなファイルで希望するCAをマウントしてください。証明書はPEM形式で受け入れられますが、ファイル拡張子はcrtである必要があります。

例: -v rpxy/ca-certificates:/usr/local/share/ca-certificates