Webサーバを外部公開する場合、Webサーバで使用されるポート80とポート443は、ルーターのポートフォワーディングで1台のサーバに中継されます。
よって、Webサーバとしての役割を搭載できるホストはローカルネットワーク内で1台となりますが、ここにリバースプロキシを導入することにより、アクセスされるドメイン名(ホスト名)毎に別々のWebサーバに、外部からのリクエストを中継することが出来ます。
すなわち、Webサーバを物理的に分離することが可能となります。
1.リバースプロキシとは
リバースプロキシとは、インターネットと内部ネットワークの間に配置され、インターネット側からのWebアクセス通信を受け付けて内部のWebサーバに中継する仕組みです。
Synology NASにはリバースプロキシの仕組みが搭載されているため、内部ネットワーク上に配置されたSynology NAS以外のホストのWebサーバに対し、Synology NASがWebアクセスを受け付けて、他ホストのWebサーバに中継させることが出来ます。
また、アクセスするドメイン名ごとに別々の中継先を設定することができます。
本記事では、Synology NASのリバースプロキシ機能を設定して、Synology NASからローカルネットワーク上に配置した他ホスト(Ubuntu 20.04 LTS Server)に構築したWebサーバ(WordPress Webサイト)に外部からのドメイン名でのアクセスを中継する手順について紹介します。
さらに、WordPress Webサイトのアクセス時に、URLにWordPressのインストール先ディレクトリを含めずドメイン名だけでアクセスするために、Ubuntu ServerでApacheのバーチャルホストを設定する手順について紹介します。
2.Synology NASでのリバースプロキシ設定
2-1.リバースプロキシ規則の設定
DSM7.0のリバースプロキシ設定は、[コントロールパネル]>[ログインポータル]>[詳細設定]にあります。
[リバースプロキシ]をクリックすると、[リバースプロキシダイアログ]が表示されます。
[リバースプロキシダイアログ]上で[作成]を選択すると、[リバースプロキシ規則]ダイアログが表示されますので、このダイアログで必要事項を入力します。
[プロキシ名を反転]は翻訳がおかしいですがリバースプロキシのことを示しているのだと思われます。
リバースプロキシ規則の名称を入れるイメージです。わかりやすい名前を入れればよいと思います。
[Target]への入力項目は以下の通りです。
プロトコル | HTTPまたはHTTPSを選択します。 HTTPSを選択する場合は、ホスト名(ドメイン名)をDNSへ登録し、SSL証明書の取得を済ましておく必要があります。 |
ホスト名 | リバースプロキシでWebサーバに中継するときの外部からのホスト名(ドメイン名)を入力します。 |
ポート | ポート番号を入力します。(HTTPだと80、HTTPSだと443) |
HSTSを有効にする | 強制的に HTTPS 接続させる設定です。HTTPS化する場合はチェックを入れます。 |
[送り先]への入力項目は以下の通りです。
プロトコル | HTTPまたはHTTPSを選択します。リバースプロキシ側(インターネット側)の通信をHTTPS化する場合は、中継のプロトコルはHTTPを選択することでよいと思います。 |
ホスト名 | リバースプロキシで中継先のWebサーバのホスト名を入力します。ローカルネットワーク側でドメイン名でのアクセスが出来ない場合はIPアドレス入力でよいです。 |
ポート | ポート番号を入力します。(HTTPだと80、HTTPSだと443) |
入力が完了したら、[保存]をクリックしてリバースプロキシ規則を保存します。
2.2.リバースプロキシ規則にSSL証明書の設定
インターネット側からアクセスするときのプロトコルをHTTPS化する場合はリバースプロキシ規則にSSL証明書の設定を行います。
[コントロールパネル]>[セキュリティ]>[証明書]>[設定]をクリックし、設定ダイアログを表示します。
リバースプロキシ規則の設定で保存した名称が追加されていますので、[証明書] プルダウンメニューを選択し、インターネット側からアクセスする場合のホスト名(ドメイン名)に対応したSSL証明書を選択します。
[OK]をクリックし設定を反映します。
3.Ubuntu 20.04 LTS Serverでのバーチャルホスト設定
リバースプロキシの設定により、インターネット側からのドメイン名でのアクセスを、ローカルネットワーク内の他ホストのWebサーバに中継することが出来るようになりましたが、Webサーバのドキュメントルートにアクセスするため、WordPresssサイトへのアクセスが
[ドメイン名/WordPressインストールフォルダ名]
となります。
これを[ドメイン名]だけでWordPresssサイトにアクセスできるよう、他ホスト(Ubuntu 20.04 LTS Server)のWebサーバでバーチャルホスト設定を行います。
以下の例は、インターネット側からのドメイン名が[masao-tec.com]、WordPressインストール先フォルダが[Webサーバのドキュメントルート/wordpress]としています。
3-1.バーチャルホストの設定ファイル作成
rootアカウントで実施します。
[/etc/apache2/sites-available]直下にバーチャルホストの設定ファイルを作成します。
設定ファイル名は何でもよいですが、管理しやすくするためにドメイン名を使用することとしました。(masao-tec.com.conf)
root@ubuntu002:~# vi /etc/apache2/sites-available/masao-tec.com.conf
# 新規作成
# バーチャルホストのドメインの設定
<VirtualHost *:80>
DocumentRoot /var/www/wordpress
ServerName masao-tec.com
ServerAdmin masao@mail.com
ErrorLog /var/log/apache2/masao-tec.com.error.log
CustomLog /var/log/apache2/masao-tec.com.access.log combined
</VirtualHost>
3-2.バーチャルホストの設定ファイル有効化
作成したバーチャルホストの設定ファイルを有効化するため[a2ensite]コマンドをドメイン名を引数にして実行します。
本コマンド実行で/etc/apache2/sites-enabled/以下に設定ファイルのシンボリックリンクが張られます。
[systemctl restart apache2]でWebサーバを再起動します。
root@ubuntu002:~# a2ensite masao-tec.com
Enabling site masao-tec.com.
To activate the new configuration, you need to run:
systemctl reload apache2
root@ubuntu002:~# systemctl restart apache2
4.Webサイトの表示確認
ブラウザのURLに[ドメイン名]を入力してWebサイトにアクセスします。
WordPressのWebサイト画面が表示されればOKです。