まずは、リバースプロキシの設定からだが、その前に頭の整理。
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 | @ |
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サーバの設定は次に。