Ubuntu 20.04 LTS サーバ構築 – Nginxインストール
2022.05.01
この記事は最終更新日から1年以上が経過しています。
前回のUbuntu 20.04 LTS サーバ構築 – 初期セットアップの続きです。
メニュー
- Ubuntu 20.04 LTS サーバ構築 – 初期セットアップ
- Ubuntu 20.04 LTS サーバ構築 – Nginxインストール
- Ubuntu 20.04 LTS サーバ構築 – Let’s EncryptでSSL/TLS化
- Ubuntu 20.04 LTS サーバ構築 – Postfixインストール
- Ubuntu 20.04 LTS サーバ構築 – Dovecotインストール
- Ubuntu 20.04 LTS サーバ構築 – Postfix SASL認証
- Ubuntu 20.04 LTS サーバ構築 – Postfix Let’s EncryptでTLS化
- Ubuntu 20.04 LTS サーバ構築 – DKIM、DMARCを設定する
Nginxのインストール
ローカルパッケージインデックスを更新し、nginxをインストール
$ sudo apt update $ sudo apt install nginx
ファイアウォールの調整
ufwで使用できるアプリケーション構成を確認。
$ sudo ufw app list
アプリケーションプロファイルの一覧が表示されます。
Output Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH
Nginxには3つのプロファイルがあります。
- Nginx Full: ポート80とポート443の両方を開放。
- Nginx HTTP: ポート80のみ開放。
- Nginx HTTPS: ポート443のみ開放。
後ほど、HTTPSの設定も行うので、Nginx Fullを選択し有効にしておきます。
$ sudo ufw allow 'Nginx Full'
変更後、適応されているのを確認。
$ sudo ufw status
許可されたHTTPトラフィックが出力表示されます。
Output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
Webサーバーの確認
インストール後Nginxは自動起動するので、起動確認。
$ systemctl status nginx
Output ● 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 Wed 2022-04-13 18:21:02 UTC; 23h ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) Memory: 6.6M CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process
サーバーのIPアドレスをicanhazip.comツールを用いて確認。
$ curl -4 icanhazip.com
ブラウザのアドレスバーにIPアドレスを入力。
http://your_server_ip
デフォルトのNginxページの表示が確認できます。
サーバーブロックのセットアップ
Nginxには、デフォルトで有効になっているサーバーブロックとは別に`/var/www`内に新たにディレクトリ構造を作成していきます。
(your_domainは取得、設定したドメイン)
$ sudo mkdir -p /var/www/your_domain/html
$USER 環境変数を用いて、ディレクトリの所有権を割り当てます。
$ sudo chown -R $USER:$USER /var/www/your_domain/html
所有者には読み取り・書き込み・実行可能権限を、グループには読み取り・実行可能権限のみをそれぞれ付与します。
$ sudo chmod -R 755 /var/www/your_domain
サンプル index.html ページを作成します。
$ vim /var/www/your_domain/html/index.html
サンプルHTML
/var/www/your_domain/html/index.html
<html><head><title>My Home page</title></head><body><h1>Welcome! My website</h1></body></html>
Nginxのサーバーブロック設定ファイルを作成します。
$ sudo vim /etc/nginx/sites-available/your_domain
構成ブロックを作成
/etc/nginx/sites-available/your_domain
server { listen 80; listen [::]:80; root /var/www/your_domain/html; index index.html index.htm index.nginx-debian.html; server_name your_domain www.your_domain; location / { try_files $uri $uri/ =404; } }
sites-enabled ディレクトリにリンクを作成し、ファイルを有効にします。
$ sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
サーバー名を追加することで発生する可能性があるハッシュバケットメモリの問題を回避するために、 /etc/nginx/nginx.conf ファイルを修正。
$ sudo vim /etc/nginx/nginx.conf
server_names_hash_bucket_size のコメントを外します。
/etc/nginx/nginx.conf
... http { ... server_names_hash_bucket_size 64; ... } ...
Nginxファイルに構文エラーがないことをテスト。
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
問題なければ、Nginxを再起動して変更を有効にします。
$ sudo systemctl restart nginx
http://your_domainまたはhttp://www.your_domain をブラウザで確認。以下のように表示。
その他の設定
これらの設定は任意で設定していきます。
Access Log設定
$ sudo vim /etc/nginx/nginx.conf
location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ { expires 7d; access_log off; } location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff|woff2)$ { add_header Access-Control-Allow-Origin "*"; expires 7d; access_log off; }
Gzip設定
デフォルトではコメントアウトされているので、コメントアウト解除。
$ sudo vim /etc/nginx/nginx.conf
gzip on; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
続いて、Let’s Encryptで、TLS設定を行っていきましょう。