Nginx(エンジンエックス)は、Apache(アパッチ)に次ぐ人気のWebサーバーです。
Nginx(エンジンエックス)、Apache(アパッチ)それぞれの内容については以下の記事で詳しく解説しています。
『Nginxとは。Webサーバーソフトとしての強みや将来性を解説』
『Apacheとは。Webサーバーソフトとしての特徴や将来性を解説』
Nginxは高いパフォーマンスとスケーラビリティを提供する軽量で高速なWebサーバーであり、Apacheは柔軟性が高く、多くのモジュールを使用して機能を拡張できるWebサーバーです。
どちらを使用するかは、使用目的や要件によって異なります。
本記事では、Ubuntu環境にNginxを構築し、SSLの設定を行うまでの手順を紹介します。
Apacheでの構築方法は、以下の記事でわかりやすく解説しています。
『UbuntuとApacheでのWebサーバー構築方法【初心者向け】』
UbuntuをVPSで利用するなら
ミライサーバー
\2週間無料・全プランSSD搭載/
ミライサーバーを無料で試す
目次
Nginxのインストール
前提条件
今回は、仮想マシン上にUbuntuおよびNginxを構築します。
仮想マシンのスペックは以下のとおりです。
- CPU:2vCPU
- Memory:4GB
- Disk:50GB
Ubuntu、Nginxは以下のバージョンを利用しています。
- Ubuntuのバージョン:Ubuntu 22.04.2 LTS
- Nginxのバージョン:Nginx 1.18.0(Ubuntu)
2022.10.13
Ubuntuとは。特徴、できること、通常版とLTE版の違いを解説
UbuntuはLinux系のOSであり、多くのLinuxディストリビューションの中でも高い人気を誇ります。非常に扱いやすいた...
コマンドの標記については、実際に入力するコマンドを太字、コマンドを実行後に入力を求められる箇所については赤字、補足の内容を青字で記載しています。
Nginxのインストール手順
今回はUbuntuにデフォルトで利用できるソフトウェアリポジトリを使用してNginxをインストールします。
Nginxをインストールするには、管理者権限が必要です。
rootアカウントを使用するか、通常ユーザー(以下の例では、testuser)をsudoグループに追加しておきましょう。
# usermod -aG sudo testuser |
次に、Nginxをインストールします。
以下の例では、先ほどsudoグループに追加した通常ユーザーを使って、sudoコマンドからNginxパッケージをインストールしています。
$ sudo apt update $ sudo apt install nginx |
インストールが完了すると、すでに起動した状態になるため、起動の確認とNginxのバージョンを確認します。
$ sudo systemctl status nginx ● nginx.service – A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2023-05-06 11:18:47 JST; 1min 42s ago Docs: man:nginx(8) Process: 29866 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 29867 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 29957 (nginx) Tasks: 3 (limit: 4617) Memory: 4.0M CPU: 16ms CGroup: /system.slice/nginx.service ├─29957 “nginx: master process /usr/sbin/nginx -g daemon on; master_process on;” ├─29960 “nginx: worker process” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” └─29961 “nginx: worker process” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” 5月 06 11:18:47 Ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server… 5月 06 11:18:47 Ubuntu systemd[1]: Started A high performance web server and a reverse proxy server. |
※Nginxのバージョン確認
$ nginx -v nginx version: nginx/1.18.0 (Ubuntu) |
実際にブラウザを起動し、WebサーバーにアクセスするとNginxのデフォルトページが表示されます。
※ブラウザを起動し、以下のURLにアクセス http://[WebサーバーのIPアドレスまたはホスト名] または、Webサーバー上でブラウザを起動し、以下のURLを実行 http://localhost |
Nginxのプロセス管理
ここで、インストールしたNginxのプロセス管理の方法について、紹介します。
インストールした直後はすでにWebサーバーが起動した状態ですが、停止や起動、自動起動の設定を行いたい場合は、以下のコマンドを実行します。
操作 | コマンド |
---|---|
Nginxの停止 | $ sudo systemctl stop nginx |
Nginxの起動 | $ sudo systemctl start nginx |
Nginxの再起動 | $ sudo systemctl restart nginx |
設定のリロード | $ sudo systemctl reload nginx |
自動起動の有効化 | $ sudo systemctl enable nginx |
自動起動の無効化 | sudo systemctl disable nginx |
SSL証明書の設定
Nginx Webサーバーをインストールし、デフォルトページが表示されているので、Webサーバーの構築は完了です。
次に、SSL証明書を作成・配置して、セキュリティの高い「https」通信による接続ができるように設定を追加していきます。
SSLサーバー証明書については、以下の記事で詳しく解説しています。
『SSLサーバー証明書とは?暗号化通信に必須。具体的に解説します。』
SSL証明書の作成
SSL証明書は、本来であれば認証局(CA)に認証してもらうことで発行されるを導入しますが、今回は仮となる自己証明書を作成します。
自己証明書は、第三者によって認証がされていないため、信用度が低いです。
外部に公開する場合は、自己証明書を使用しないようにしましょう。
自己証明書の作成は、rootユーザーで行います。
手順1. rootユーザーへ変更
$ sudo su # ※←プロンプトがシャープに変わる |
手順2. 秘密鍵の作成
# mkdir /etc/nginx/certificate # cd /etc/nginx/certificate # openssl genrsa -aes128 -out [秘密鍵ファイル名] 2048 (例:openssl genrsa -aes128 -out testssl.key 2048 Enter PEM pass phrase: ※秘密鍵のパスフレーズを入力 Verifying – Enter PEM pass phrase: ※秘密鍵のパスフレーズをもう1度入力 |
パスフレーズは、秘密鍵のパスワードのようなものです。
Nginxの設定が読み込まれるたびにパスフレーズの入力が求められます。
これが煩わしく感じる場合は、以下のコマンドでパスフレーズを削除することもできます。
# openssl rsa -in [秘密鍵ファイル名] -out [秘密鍵ファイル名] (例:openssl rsa -in testssl.key -out testssl.key) Enter pass phrase for testssl.key: ※設定した秘密鍵のパスフレーズを入力 writing RSA key |
手順3. CSRファイルを作成
これは、証明書を発行するために必要な情報を入力していくものです。
以下は設定例です。
# openssl req -new -days 365 -key [秘密鍵ファイル名] -out [CSRファイル名] (例: openssl req -new -days 365 -key testssl.key -out testssl.csr) Ignoring -days without -x509; not generating a certificate You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ‘.’, the field will be left blank. —– Country Name (2 letter code) [AU]:JP ※国のレターコード(日本だとJP) State or Province Name (full name) [Some-State]: ※サーバーの所在(市区町村) Locality Name (eg, city) []: ※サーバーの所在(都道府県) Organization Name (eg, company) [Internet Widgits Pty Ltd]: ※組織名 Organizational Unit Name (eg, section) []: ※部署名 Common Name (e.g. server FQDN or YOUR name) []: ※サーバー名またはFQDN Email Address []: ※メールアドレス
Please enter the following ‘extra’ attributes to be sent with your certificate request A challenge password []: ※空白のまま An optional company name []: ※空白のまま |
手順4. 自己証明書の作成
CSRファイルをもとに、自己証明書を作成します。
以下は設定例です。
# openssl x509 -in [CSRファイル名] -out [自己証明書ファイル名] -req -signkey [秘密鍵ファイル名] -days 365 (例: openssl x509 -in testssl.csr -out testssl.crt -req -signkey testssl.key -days 365) Certificate request self-signature ok subject=C = JP, ST = Some-State, O = Internet Widgits Pty Ltd ※実際は、CSRファイル作成時に設定した内容が表示されます
# # ls -lrt total 12 -rw——- 1 root root 1704 5月 8 07:21 testssl.key ※秘密鍵ファイル -rw-r–r– 1 root root 956 5月 8 07:26 testssl.csr ※CSRファイル -rw-r–r– 1 root root 1123 5月 8 07:32 testssl.crt ※自己証明書ファイル |
手順5. Nginxの設定変更
Nginxの設定ファイルは、デフォルトとして「default.conf」がありますが、今回はSSL用の設定ファイル(ssl.conf)を新たに作成し、そこに設定するようにします。
以下は例として、最低限HTTPSでアクセスできる設定を記載しています。
# vi /etc/nginx/conf.d/ssl.conf ※以下の行を記載
server { #SSLの設定 #HTTPSポートを指定(デフォルトは443) listen 443 ssl; #サーバー名 server_name test-nginx; #Webサーバーのrootディレクトリ location / { #htmlファイルなどを置くパスを定義 root /usr/share/nginx/html; #デフォルトで表示するファイル index index.html index.htm; } #50x系エラー時のファイル処理 error_page 500 502 503 504 /50x.html; #50x系エラー時に表示するファイル定義 location = /50x.html { #50x系エラー時に表示するファイルパス root /usr/share/nginx/html; }
#作成したSSL証明書のパス ssl_certificate /etc/nginx/certificate/testssl.crt; #作成した秘密鍵のパス ssl_certificate_key /etc/nginx/certificate/testssl.key; } |
手順6. Nginxの再起動
設定したら、Nginxを再起動します。
# systemctl restart nginx # systemctl status nginx
● nginx.service – A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2023-05-08 07:54:10 JST; 25s ago Docs: man:nginx(8) Process: 8406 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 8408 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 8409 (nginx) Tasks: 3 (limit: 4614) Memory: 4.8M CPU: 23ms CGroup: /system.slice/nginx.service ├─8409 “nginx: master process /usr/sbin/nginx -g daemon on; master_process on;” ├─8410 “nginx: worker process” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” └─8411 “nginx: worker process” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” 5月 08 07:54:10 Ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server… 5月 08 07:54:10 Ubuntu systemd[1]: Started A high performance web server and a reverse proxy server. |
実際にブラウザを起動し、Webサーバーにhttpsでアクセスします。
※ブラウザを起動し、以下のURLにアクセス https://[WebサーバーのIPアドレスまたはホスト名] または、Webサーバー上でブラウザを起動し、以下のURLを実行 https://localhost |
今回設定した証明書は自己証明書であるため、以下のような警告が表示されます。
Firefoxで接続した場合では、「詳細へ進む」→「危険性を承知で接続」を選択すれば、先ほどと同様Nginxのデフォルトページが表示されます。
まとめ
今回はUbuntuおよびNginxを使用したWebサーバーの構築方法について説明しました。
NginxはApache HTTP Serverに次ぐ人気の高いWebサーバーソフトウェアです。
今回のように少ない手順で簡単に構築することができるので、ぜひ参考にしてみてください。
UbuntuをVPSで利用するならミライサーバー
ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。
ミライサーバーのVPSでは、高速処理が可能なSSDを全プランに搭載しています。
OSは、UbuntuやDebian、AlmaLinuxなどの豊富なラインアップから選択することができます。
2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。