まずは、リバースプロキシの設定からだが、その前に頭の整理。

1.Local Network 関係

 sambaの設定が済んでいれば、サーバ間のローカルネットワークは設定がほぼ終わっている。

LocalNetwork :192.168.11.
Reverse Proxy Server :192.168.11.11 test11.local
Nextcloud Server :192.168.11.12 test12.local

sambaと同じく、homeゾーンを使用し、http https を有効に。

# firewall-cmd --add-service=http --zone=home --permanent
# firewall-cmd --add-service=https --zone=home --permanent
# firewall-cmd --reload

いずれのサーバも、Apacheの名前ベースのバーチャルホスト機能を使うので、名前の解決が不可欠。
わずか2台なので、ローカルのDNSは立ち上げず、/etc/hosts ファイルへの記載で名前解決を行う。

#vi /etc/hosts
 192.168.11.11 test11.local(Reverse Proxy Server)
 192.168.11.12 test12.local(Nextcloud Server)

 このReverse Proxy Server(test11.local)とNextcloud Server(test12.local)の間も https による通信を行う設定にする。
 httpsなのでサーバ証明書が必要なのだが、ローカルでの認証方法も分からず、証明書の件は取りあえず後回しに。

2.Reverse Proxy Server

(1)ネームサーバへの登録
 ネームバーチャルホストなので、サーバのFQDNを「さくらのネームサーバ」に登録しておく、リバースプロキシサーバのインターネット側のサーバ名はwww.nextcloud.example.jpとして、最終的には次のゾーン設定になれば良い。
 勿論サーバーのアドレス「192.168.0.1」は実際のグローバルIPアドレスに変更すること。

エントリ名 タイプ データ
 @  NS  ns1.dns.ne.jp.
 NS  ns1.dns.ne.jp.
 A  192.168.0.1
 MX  10 @
 www.tako  CNAME  @
 www.ika  CNAME  @
 mail  CNAME  @
 www.nextcloud  CNAME  @

(2)VirtualHost設定ファイルの作成
 正直、よく分からないのだが、色々なサイトを見てこんな感じに、Nginxの設定は結構みつかるのだが、Apacheの設定は古いものしか見あたらず、結構苦戦。 いまどきこんなことをする人がいないのか、当たり前すぎる技術なのか素人にはよく分からない。

<VirtualHost *:80>
ServerName www.nxtcld.example.jp

ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.nextcloud.example.jp
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<VirtualHost *:443>
ServerName www.nextcloud.example.jp:443

ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>

SSLEngine on
SSLProxyEngine on

ProxyPass / https://test12.local/
ProxyPassReverse / https://test12.local/

ServerAlias www.nextcloud.example.jp
SSLCertificateFile /etc/letsencrypt/live/www.nextcloud.example.jp/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.nextcloud.example.jp/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/www.nextcloud.example.jp/chain.pem

</VirtualHost>

 赤字部分が肝心のようだ。 なお、こちらのサーバ証明書は「Let’s Encrypt」で取得したもの。

(3)サーバ証明書の取得

 Certbot を使った SSL/TLS サーバ証明書の取得は以下のコマンドを使用。
 -d の後に、サブドメインを入れる。

# certbot --apache -d www.nextcloud.example.jp

 問題がなければ、Congratulations! が出てサーバ証明書が無事取得できる。 本当に「Let’s Encrypt」はありがたい。

 ローカルでの証明書の取得や、Nextcloudサーバの設定は次に。