機能 #20
山村 一允 さんが3ヶ月前に更新
# 概要
社内システムのサブドメイン化に向けた事前準備として、VPSへNginxをリバースプロキシとして導入する。
導入はDockerコンテナでの運用を前提とし、既存環境への影響を最小限に抑えつつ、設定の再現性・保守性を高める構成とする。
また、本対応を機にInfrastructure as Code(IaC)の考え方を取り入れ、Nginxの設定やDocker Compose、構築手順書などの構成情報をGitリポジトリで管理する。 DNSのAレコードではIPアドレスのみを指定でき、ポート番号を指定することはできない。
これにより、環境の再現性、変更履歴の管理、レビュー、バックアップ、および将来的な自動化への対応を容易にする。 そのため、各サブドメインへのアクセスはHTTP(80番)またはHTTPS(443番)で受け付け、
Nginxでホスト名(サブドメイン)を判別し、VPS内で稼働している各サービスへ転送する構成とする。
なお、パスワードやSSL証明書などの機密情報はGitリポジトリでは管理せず、`.env`ファイルやDocker Volume等を利用して環境ごとに管理する。
DNSのAレコードではIPアドレスのみを指定でき、ポート番号を指定することはできない。そのため、各サブドメインへのアクセスはHTTP(80番)またはHTTPS(443番)で受け付け、Nginxでホスト名(サブドメイン)を判別し、VPS内で稼働している各サービスへ転送する構成とする。
Nginxではサブドメインごとに転送先のポート番号を設定し、リバースプロキシとして各サービスへアクセスを振り分ける。
| サービス名 | ポート番号 | 備考 |
| :--- | :--- | :--- |
| Mattermost | [8080](http://133.125.46.225:8080/) ||
| Redmine | [3000](http://133.125.46.225:3000/) ||
| 端末管理システム | [8090](http://133.125.46.225:8090/) ||
| SES管理システム | [8101](http://133.125.46.225/ses_sys) |Apacheによるプロキシ設定あり<br>VPS内の/etc/httpd/conf.d/dav_svn.confで設定|
| SES管理システム(検証用) | [8102](http://133.125.46.225/ses_sys_stg) |Apacheによるプロキシ設定あり<br>VPS内の/etc/httpd/conf.d/dav_svn.confで設定<br>基本的に停止している|
# 実施内容
- インフラ管理用Gitリポジトリの作成
- DockerコンテナによるNginx環境の構築
- Docker Composeファイルの作成
- Nginx設定ファイル(`nginx.conf`、`conf.d`)の作成 Nginxの初期設定
- `.env.example`および`.gitignore`の作成
- README(構築・運用手順)の作成
- リバースプロキシ設定の作成
- サブドメインごとの転送設定(Server Block)
- HTTP(80番)・HTTPS(443番)でのアクセス確認
- 既存のApache(SVN)との共存確認
- コンテナ起動・停止手順の確認
# 完了条件
- DockerコンテナとしてNginxが正常に起動すること
- Nginxが80番・443番ポートでアクセスを受け付けられること
- サブドメインごとに指定したサービスへアクセスを振り分けられること
- 既存のApache(SVN)へ影響がないこと
- Docker Composeにより環境を再現できること
- Nginx関連の構成ファイルおよび手順書がGitリポジトリで管理されていること
- 機密情報がGitリポジトリに含まれていないこと
戻る