【YunoHost】Redirectアプリを使ったリバースプロキシ(Nginx)の設定

概要(Introduction)

Redirectアプリは、単独で動作するアプリケーションではありません。

外部URLへの302リダイレクトや、YunoHost app storeを経由せずにインストールしたアプリケーション(ローカル・別のマシン問わず)へのリバースプロキシ接続に必要な設定ファイルと、YunoHostのユーザーポータルへのカスタムタイルを作成するアプリケーションです。

現在リバースプロキシで動作しているアプリケーション

インストールと設定ファイル

インストール

インストール自体は以下の手順でYunoHost app storeから簡単にインストールできます。

  1. Redirectをインストールするドメインを選択
  2. (必要に応じて)サブディレクトリ名を指定
  3. 302リダイレクト、リバースプロキシの指定
  4. アクセス権限の選択

設定ファイル(基本)

Redirectをインストールするドメイン(/etc/nginx/conf.d/Redirectのインストールドメイン.d/)に以下のファイルが作成されます。

302リダイレクトは全く問題なく、リバースプロキシでも問題なく動作する場合が多いのですが、アプリケーションによっては設定の変更が必要になります。

302リダイレクト

location __PATH__ {
  return 302 __TARGET__$request_uri;
}

リバースプロキシ

#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
location __PATH__/ {

  proxy_pass        __TARGET__;
  proxy_redirect    off;
  proxy_set_header  Host $host;
  proxy_set_header  X-Real-IP $remote_addr;
  proxy_set_header  X-Forwarded-Proto $scheme;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header  X-Forwarded-Host $server_name;
  proxy_set_header  X-Forwarded-Port $server_port;
  
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";

  # Include SSOWAT user panel.
  include conf.d/yunohost_panel.conf.inc;
  more_clear_input_headers 'Accept-Encoding';
}

設定を変更したアプリケーション

ファイルをアップロードするアプリケーション

基本の設定ファイルにclient_max_body_sizeが記載されていないので、必要に応じてサイズを大きくしてください。

追記

client_max_body_size 50M; #50Mは例です。

OnlyOffice Documentserver

YunoHost app storeからインストールしたOnlyOfficeの設定ファイルを使っています(proxy_passは変更)。

変更

#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
location / {

  proxy_pass        自宅サーバーのIPアドレス:ポート番号/;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  #proxy_set_header Connection $proxy_connection;
  proxy_set_header Connection "upgrade";
  proxy_set_header  X-Forwarded-Host $server_name;
  proxy_set_header  X-Forwarded-Proto $scheme;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_redirect    off;
  proxy_set_header  Host $host;
  proxy_set_header  X-Real-IP $remote_addr;
  
  #Nextcloudとの連携の場合はNextcloudのインストールドメインを記載
  more_set_headers "X-Frame-Options : ALLOW-FROM Nextcloudのインストールドメイン always";
  client_max_body_size 10M;
}

所感・感想

知識・スキルが足りないため、アプリケーションによって必要なヘッダー情報の受け渡しがわからず、初期設定のままでは動作しないアプリケーションへの対応はほとんどできていません。

とは言え、大部分のアプリケーションは動作するので、VPSと自宅サーバーとの使い分けで便利に環境構築ができるようになりました。

簡単なユーティリティですが、ユーザーポータルの表示だけでなくアクセス権限の管理もできるようになるためかなり重宝しています。