firewall-cmdコマンドでウェブサーバーの待ち受けポートである80番に外部から接続できるように設定を追加します。
[root@localhost ~]# firewall-cmd --add-service=http --permanent |
[root@localhost ~]# firewall-cmd --reload |
[root@localhost ~]# firewall-cmd --list-all ←設定確認 |
Nginx用レポジトリファイルの追加
[root@localhost ~]# vi /etc/yum.repos.d/nginx.repo |
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1 |
enabled=1としてレポジトリを常に有効にしています。
[root@localhost ~]# yum -y install nginx |
エラーの出力がなく”完了しました!”と表示されれば、Nginxのインストールは完了です。
[root@localhost ~]# systemctl start nginx |
[root@localhost ~]# systemctl enable nginx ←nginxの自動起動設定 |
エラーが出力されなければ、nginxは正常に起動しています。
ここまでの手順でnginxパッケージに用意されたデフォルトで用意されているウェブページを表示することが出来ます。
ご自分の環境で利用されているウェブブラウザから、テスト用のページが表示できることを確認します。もしhttpdをインストールしたサーバーのIPアドレスが 192.168.1.7 の場合
をブラウザへ入力すると、以下のようなテスト用のウェルカムページが表示されます。
[root@localhost ~]# useradd -s /sbin/nologin www |
[root@localhost ~]# passwd www |
Nginx構成はバーチャルホストを利用することを前提にします。アクセス先 URLに応じてディレクトリを分けて、各ディレクトリにコンテンツを配置する形になります。その為、コンテンツを配置するためのディレクトリを事前に2つ作成しておきます。
※本作業はバーチャルホストを追加する毎に必要になります。
コンテンツはFTPを利用してアップロードを行うことを考えて、”/home/www/”以下にバーチャルホストのFQDNに合わせたディレクトリを作成し、その中に配置します。今回の構成ではドメイン名として”hoge.com”と”usage.com”を設定します。
ディレクトリの作成を行います。mkdirコマンドで作成します。
[root@localhost ~]# mkdir /home/www/hoge.com /home/www/usage.com |
作成したディレクトリに、テスト用のHTMLファイルを作成します。二つのドメインに対して、作成します。
hoge.com テスト用HTMLファイル
[root@localhost ~]# vi /home/www/hoge.com/index.html |
<html> <body> hoge.com test page </body> </html> |
作成後、ファイルを保存します。これで hoge.com 用ファイルの作成は完了です。
続いて、usage.com テスト用のHTMLファイルを作成します。
usage.com テスト用HTMLファイル
[root@localhost ~]# vi /home/www/usage.com/index.html |
<html> <body> usage.com test page </body> </html> |
作成されたディレクトリは所有者がrootになっています。これをウェブサーバー用のユーザーである www に変更します。以下のように chown コマンド実行します。(-Rオプションはディレクトリに含まれる全てのファイル、ディレクトリの権限を変更します。)
[root@localhost ~]# chown -R www:www /home/www |
今回の構成ではNginxで複数のバーチャルホストを運用する形を想定しています。複数のバーチャルホストを運用するには、一つのconfファイルに列記していくことも可能ですが、数が多くなってくると管理が大変になります。ここでは管理を簡単にするために、ディレクトリを作成します。
バーチャルホストを管理するためのディレクトリとして以下の二つを作成します。
sites-availableディレクトリには全てのバーチャルホスト用設定ファイルを保存します。sites-enabledディレクトリには有効にするバーチャルホストの設定ファイルに対してシンボリックリンクを設定していきます。
sites-enabledのシンボリックリンクが設定されているバーチャルホストが有効になるイメージです。
mkdirコマンドで管理用ディレクトリを作成します。
[root@localhost ~]# mkdir /etc/nginx/sites-available /etc/nginx/sites-enabled |
作成後に確認します。lsコマンドでディレクトリのファイルを表示します。
[root@localhost ~]# ls -a /etc/nginx |
Nginxを利用するにあたっての設定変更を説明していきます。設定の前提は以下のようになります。
この条件に合わせて設定を行っていきます。
Nginxの設定はNginx自体の設定を行うためのnginx.confファイルと、バーチャルホストを設定するためのdefault.confに分かれています。ファイルは”/etc/nginx/”以下に保存されています。まずはnginx.confの変更を行います。
nginx.confの編集前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。
[root@localhost ~]# cd /etc/nginx/ |
[root@localhost ~]# cp -p nginx.conf nginx.conf.org |
バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。
[root@localhost ~]# vi nginx.conf |
動作ユーザーの変更
userの設定を変更します。動作ユーザーの設定になります。
user www; |
バージョンの非表示
http { server_tokens off; include /etc/nginx/mime.types; default_type application/octet-stream; |
バーチャルホスト用設定ファイルのinclude
有効になるバーチャルホスト用の設定ファイルをincludeするためにhttpディレクティブに設定を追加します。
include /etc/nginx/conf.d/*.conf; include sites-enabled/*.conf; } |
gzip圧縮の有効化
コンテンツを配信する際にgzipを利用して圧縮を行い、サイズを小さくする機能を有効化します。多少ですがサイトの表示が早くなります。
gzip on; |
長いバーチャルホスト名への対応
日本語ドメインなどで見られる長いバーチャルホスト名を設定すると、エラーになることがあります。その回避として以下の設定を行います。
gzipの記述の下辺りに以下の設定を追加します。128の部分はハッシュ化されたバーチャルホスト名のサイズになります。やや大きめを指定しています。
server_names_hash_bucket_size 128; |
キープアライブのタイムアウト秒数を変更
デフォルトで設定されているkeepalive timeoutはやや長いため、変更します。65秒から30秒に変更しています。必要に応じて時間は調整してください。
keepalive_timeout 30; |
nginx.confの変更が完了できたら、設定ファイルに間違いや問題がないかを確認します。nginxに”-t”オプションを付けて実行することで設定ファイルの間違いをチェックできます。設定変更後には実行することをお勧めします。
以下のように実行します。
[root@localhost ~]# nginx -t |
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful |
Nginx自体の設定は完了しましたので、続いて、バーチャルホスト用の設定ファイルを作成します。
設定ファイルとしてdefault.confが用意されていますが、これとは別にドメイン毎の設定ファイルを作成していきます。default.confはどのバーチャルホスト名にもマッチしない場合に表示されるホストになります。
最初から用意されているdefault.confをバーチャルホスト用ディレクトリであるsites-availableへ移動します。default.confは”/etc/nginx/conf.d/”以下に入っています。以下の手順でファイルをコピーします。
[root@localhost ~]# mv /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/ |
一つ目のバーチャルホスト”hoge.com”用の設定ファイルを作成します。作成先はsites-availableディレクトリになりますので、viコマンドを以下のように実行します。尚、ファイル名は”ドメイン名”+拡張子”conf”という命名規則で作成します。
[root@localhost ~]# vi /etc/nginx/sites-available/www.testdom.conf |
内容は以下のようになります。
server { listen 80; server_name hoge.com www.hoge.com; access_log /var/log/nginx/hoge.com-access.log main; error_log /var/log/nginx/hoge.com-error.log; root /home/www/hoge.com; location / { index index.html index.htm; } } |
ファイルの中で変更が必要になる部分は以下の項目です。
上記の項目を運用する環境に合わせて変更します。必要に応じて変更後、ファイルを保存します。
設定ファイルを作成します。作成する手順は基本的には同じです。viコマンドを以下のように実行します。
[root@localhost ~]# vi /etc/nginx/sites-available/usage.com.conf |
ファイルの内容は以下のようになります。必要に応じて変更してください。
server { listen 80; server_name usage.com www.usage.com; access_log /var/log/nginx/usage.com-access.log main; error_log /var/log/nginx/usage.com-error.log; root /home/www/usage.com; location / { index index.html index.htm; } } |
内容を確認して、問題なければファイルを保存します。
設定したバーチャルホストを有効化するためには、sites-avilableディレクトリに作成した設定ファイルに対して、sites-enabledディレクトリにシンボリックリンクを作成する必要があります。バーチャルホストの有効化と無効化を説明します。
シンボリックリンクはlnコマンドで作成します。ここでは全てのバーチャルホストを有効にします。以下のようにlnコマンドを実行します。
[root@localhost ~]# ln -s /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/default.com.conf |
[root@localhost ~]# ln -s /etc/nginx/sites-available/hoge.com.conf /etc/nginx/sites-enabled/hoge.com.conf |
[root@localhost ~]# ln -s /etc/nginx/sites-available/usage.com.conf /etc/nginx/sites-enabled/usage.com.conf |
エラーが出力されなければ、シンボリックリンクは正常に作成されています。
有効化したバーチャルホストを無効化する場合には、sites-enalbedディレクトリに設定されているシンボリックリンクを削除します。
削除はunlinkコマンドを利用します。例えばusage.com.confを無効化したい場合は以下のようにunlinkコマンドを実行します。
[root@localhost ~]# unlink /etc/nginx/sites-enabled/usage.com.conf |
設定ファイルの作成と配置が完了したら、間違いや問題がないかを確認します。nginxに”-t”オプションを付けて実行することで設定ファイルの間違いをチェックできます。設定変更後には実行することをお勧めします。
[root@localhost ~] nginx -t |
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful |
上記のように、”test is successful”と表示されていればファイルには問題ありません。
シンボリックリンクでの管理について、有効化と無効化の何れかを行った場合には設定ファイルの再読み込みとして、Nginxの再起動が必要になります。systemctlコマンドでNginxを再起動します。
[root@localhost ~]# systemctl restart nginx |
ここまででNginxのバーチャルホスト設定が完了しましたので、動作テストを行います。コマンドでの確認もできますが、ブラウザからのほうが早いと思いますので、ブラウザを利用して確認を行います。
バーチャルホストの動作確認には、DNSによる名前引き(正引き:ドメイン名からIPが引ける)が設定されている必要があります。もしDNSの名前引きが利用できない場合は、利用しているコンピューターのhostsファイルに、直接、IPとホスト名を記載することでも対応できます。
ブラウザから http://hoge.com を表示します。
これで、バーチャルホスト”hoge.com”の確認は完了です。
ブラウザから http://usage.com を表示します。
これでバーチャルホスト”usage.com”の確認は完了です。
両方のサイトが表示されたことで、バーチャルホストが正常に動作していることが確認できました。これでNginxと各バーチャルホストの確認が完了です。