Nginxを使ってみよう

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【3/22開催】テックブログを書こう!アウトプットのススメ
1年で100本ブログを出した新米エンジニアがPV数が伸びなくてもTech Blogを書き続ける理由とは?
https://tech-lab.connpass.com/event/312805/

【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

こんにちは。サイオステクノロジー OSS サポート担当何敏欽です。

Nginx は、Apache 代替となり得る Web サーバです。Apache では対応できない問題が起きてしまったことが、Nginx が作られたきっかけです。Nginx はリバースプロキシとしても機能するし、ロードバランサーとしても使用できます。

いまさらな感じもありますが、あまり Nginx を触ったことがない方のために、今回は入門として、Nginx 公式パッケージを利用して CentOS7.5/RHEL7.5 に nginx をインストール、ダウングレート、バージョン指定アップデートする方法、バーチャルホストを設定する方法や、設定項目について説明します。

Nginx のインストール、ダウングレート、バージョン指定アップデート

■Nginx のインストール

Nginx のサイトに従い Nginx のリポジトリを追加してインストールします。/etc/yum.repos.d/nginx.repo というファイルを作成し、そのファイルに以下の設定を追加します。

# cd /etc/yum.repos.d/
# vim nginx.repo
[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/rhel/7/$basearch/
gpgcheck=0
enabled=1

yum コマンドでインストールします。これで、最新バージョンがイントールされます。

# yum install nginx
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
nginx                                                    | 2.9 kB     00:00
(中略)
================================================================================
 Package       アーキテクチャー
                              バージョン                    リポジトリー   容量
================================================================================
更新します:
 nginx         x86_64         1:1.15.2-1.el7_4.ngx          nginx         758 k

トランザクションの要約
================================================================================
(中略)
インストール:
  nginx.x86_64 1:1.15.2-1.el7_4.ngx

完了しました!

nginx のバージョンを確認します。

# nginx -v
nginx version: nginx/1.15.2

nginx の自動起動設定します。

# systemctl enable nginx.service

nginx を起動します。

# systemctl start nginx.service

■Nginx のダウングレート

システム要件で現在導入したバージョンより古いバージョンを使用したい時ってありますよね。以下の手順にて Ngnix をダウングレードすることが可能です。

以下のコマンドを実施し、ダウングレード対象のパッケージを確認します。

# yum --showduplicates list nginx
インストール済みパッケージ
nginx.x86_64                    1:1.15.2-1.el7_4.ngx                     @nginx
利用可能なパッケージ
nginx.x86_64                    1:1.9.0-1.el7.ngx                         nginx
nginx.x86_64                    1:1.9.1-1.el7.ngx                         nginx
(中略)
nginx.x86_64                    1:1.13.10-1.el7_4.ngx                     nginx
nginx.x86_64                    1:1.13.11-1.el7_4.ngx                     nginx
nginx.x86_64                    1:1.13.12-1.el7_4.ngx                     nginx
nginx.x86_64                    1:1.15.0-1.el7_4.ngx                      nginx
nginx.x86_64                    1:1.15.1-1.el7_4.ngx                      nginx
nginx.x86_64                    1:1.15.2-1.el7_4.ngx                      nginx

以下のコマンドを実行し、ダウングレードを行います。

# yum downgrade nginx-1.13.12
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
(中略)
================================================================================
 Package       アーキテクチャー
                              バージョン                    リポジトリー   容量
================================================================================
ダウングレード中:
 nginx         x86_64         1:1.13.12-1.el7_4.ngx         nginx         750 k

トランザクションの要約
================================================================================
ダウングレード  1 パッケージ
(中略)
削除しました:
  nginx.x86_64 1:1.15.2-1.el7_4.ngx

インストール:
  nginx.x86_64 1:1.13.12-1.el7_4.ngx

完了しました!

■Nginx のバージョン指定アップデート

システム要件で最新バージョンではなく、特定のバージョンにアップデートしたい場合、下記のように yum update にアップデートしたいバージョンを指定すればいいです。

# yum update nginx-1.15.0
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
(中略)
================================================================================
 Package       アーキテクチャー
                              バージョン                    リポジトリー   容量
================================================================================
更新します:
 nginx         x86_64         1:1.15.0-1.el7_4.ngx          nginx         755 k

トランザクションの要約
================================================================================
更新  1 パッケージ
(中略)
更新:
  nginx.x86_64 1:1.15.0-1.el7_4.ngx

完了しました!

バーチャルホストの設定

Nginx も Apache と同様にバーチャルホストを設定できます。バーチャルホストの設定は複数の方法がありますが、比較的簡単にできるものをご紹介したいと思います。

/etc/nginx/conf.d/default.conf を以下のように編集・追記します。元のファイル default.conf に変更を加える前に、設定ファイルの雛形をコピーすることをお勧めします。

server {
    listen       80;
    server_name  hoge1.com;

    location / {
        root   /usr/share/nginx/html/hoge1;
        index  index.html index.htm;
    }
}

server {
    listen       80;
    server_name  hoge2.com;

    location / {
        root   /usr/share/nginx/html/hoge2;
        index  index.html index.htm;
    } 
}

server {
    listen       80;
    server_name  hoge3.com;

    location / {
        root   /usr/share/nginx/html/hoge3;
        index  index.html index.htm;
    }
}

上記の設定を保存したら、下記のコマンドで構文エラーがないことを確認してから Nginx を再起動して設定を反映します。

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

設定反映ができたら、次に index.html を作成します。

# cd /usr/share/nginx/html/
# mkdir hoge1 hoge2 hoge3
# vim hoge1/index.html
Virtual host hoge1's test page
# vim hoge2/index.html
Virtual host hoge2's test page
# vim hoge3/index.html
Virtual host hoge3's test page

hosts ファイルに以下の 3行を追加してドメインを解決させます。

10.1.0.X   hoge1.com
10.1.0.Y    hoge2.com
10.1.0.Z    hoge3.com

実際に Web ブラウザで https://hoge1.com にアクセスして表示を確認してみます。

hoge1

access.log に下記のメッセージが出力されます。

# tail -f /var/log/nginx/access.log
10.0.0.X- - [20/Aug/2018:14:51:56 +0900] "GET / HTTP/1.1" 200 31 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"

設定項目について

nginx.conf ファイルにおける主な設定項目では、user で実行ユーザを指定する 、パフォーマンスを調整するため Worker Process により実行プロセス数を指定する、worker_connections により 1つの worker プロセスが同時に処理できる最大接続数を設定する、error_log でエラーログを指定するなどがあります。いくつかのディレクティブの内容について、下記に説明します。

デフォルト値:1MB

最小値:1byte

最大値:特になし(0 の指定でボディサイズの制限チェック無効)

受信可能なリクエスト body の最大サイズを設定します。リクエストのサイズが設定値を超えますと、エラーメッセージ「413 Request Entity Too Large」がクライアントに返されます。

デフォルト値:off

内部的に sendfile() システムコールを用いるかどうかを指定します。on に設定するとパフォーマンス向上します。

デフォルトでは、Nginx がファイル送信自体を処理し、ファイルを送信する前にバッファにコピーします。sendfile ディレクティブを有効 (on) にしますと、データをバッファにコピーするステップが不要になり、効率良くファイルの内容をクライアントに送信できます。

デフォルト値:0

sendfile_max_chunk は、一つの sendfile() システムコールで転送できるデータ量を制限します。転送できるデータ量の制限がない場合、1つの高速な接続では、sendfile() は1つのシステムあたり数十メガバイトを送信し、ワーカープロセス全体を占有してしまう可能性があります。

デフォルト値:75s

HTTP の持続的な接続時間を設定します。0 に設定すると、KeepAlive 無効となります。Apache の KeepAliveTimeout に相当します。

デフォルト値:100

1つのキープアライブ接続で処理できる要求の最大数を設定します。最大数の要求が行われた後、接続は閉じられます。Apache のMaxKeepAliveRequests に相当します。

Nginx は、インストールや設定は極めてシンプルです。ぜひ一度、Nginx を使ってみてください。

アバター画像
About サイオステクノロジーの中の人 14 Articles
サイオステクノロジーで働く中の人です。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる