NGINX はオープンソースの無料のHTTPサーバーソフトウェアです。 NGINXは、HTTPサーバー機能に加えて、電子メール(IMAP、POP3、およびSMTP)のプロキシサーバー、およびHTTP、TCP、およびUDPサーバーのリバースプロキシおよびロードバランサーとしても機能します。 NGINXの背後にある目標は、最速のWebサーバーを作成することであり、その卓越性を維持することは、依然としてNginxプロジェクトの中心的な目標です。 NGINXは、Webサーバーのパフォーマンスを測定するベンチマークでApacheやその他のサーバーを常に上回っており、W3Techによると現在最も人気のある使用済みWebサーバーです。
次のチュートリアルでは、デフォルトのDebianリポジトリまたはLet’sEncryptからの無料のTLS/SSL証明書を使用したOndřejSurýによる代替リポジトリを使用してDebian11BullseyeにNginxをインストールする方法を学習します。
- 推奨OS: Debian11ブルズアイ
- ユーザーアカウント: sudo特権を持つユーザーアカウント またはrootアクセス(suコマンド) 。
オペレーティングシステムの更新
Debian 11 Bullseyeを更新します 既存のすべてのパッケージが最新であることを確認するためのオペレーティングシステム:
sudo apt update && sudo apt upgrade
ルートまたはSudoアクセス
デフォルトでは、他のディストリビューションと比較して、Debianを使用して起動時にアカウントを作成すると、sudoersステータスを自動的に受け取りません。 ルートパスワードにアクセスできる必要があります suコマンドを使用するには または、DebianのSudoersにユーザーを追加する方法に関するチュートリアルをご覧ください。
Nginxをインストール
方法1.DebianリポジトリからNginxStableをインストールします
最初の方法は、DebianのデフォルトリポジトリからNginxをインストールすることであり、これらのバージョンは安定していて安全であることが証明されています。プライマリWebサーバーまたはリバースプロキシを実行する必要がある場合は、Debianリポジトリパッケージをインストールすることをお勧めします。
Nginxをインストールするには、次のコマンドを実行します。
sudo apt install nginx
出力例:
「Y」と入力します 次に、「ENTERキー」を押します。 インストールを続行します。
次に、バージョンビルドを確認し、インストールが成功したかどうかを確認します。
sudo nginx -v
出力例:
nginx version: nginx/1.18.0
方法2.OndřejSurýリポジトリから最新のNginxStableまたはMainlineをインストールします
または、Debian 11リポジトリからデフォルトのNginx安定ビルドをインストールする代わりに、DebianのPHPメンテナであるOndřejSurýのリポジトリを使用してNginxStableまたはMainlineをインストールできます。
メインラインリポジトリをインポートするには:
curl -sSL https://packages.sury.org/nginx-mainline/README.txt | sudo bash -x
安定したリポジトリをインポートするには:
curl -sSL https://packages.sury.org/nginx/README.txt | sudo bash -x
新しい変更を反映するようにリポジトリを更新します:
sudo apt update
これで、Nginxリポジトリがインストールされました リポジトリリストを更新し、次のようにNginxをインストールします。
sudo apt install nginx-core nginx-common nginx nginx-full
出力例:
「」と入力します Y」をクリックし、「ENTERKEY」を押します。 続行してインストールを完了します。
次に、 apt-cachepolicyコマンドを使用して、OndřejSurýリポジトリの最新のNginxがインストールされていることを確認します。 。 チュートリアルの例に注意してください インストールされたNginxメインライン:
apt-cache policy nginx
Nginx Mainlineの出力例 :
既存の/ etc / nginx /を保持または置き換えるように求められる場合があることに注意してください nginx.conf インストール中の構成ファイル。 (n)を押して、現在の構成ファイルを保持することをお勧めします 。メンテナのバージョンに関係なくコピーが作成され、将来的に確認することもできます。
このバージョンでは、追加のモジュール、特にbrotliサポートが利用可能になることに気付くでしょう。 brotliをインストールするには 、以下の手順に従ってください。
nginx.confを開きます 構成ファイル:
nano /etc/nginx/nginx.conf
次に、 HTTP {}の前に行を追加します セクション:
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;
brotli_comp_level 1(最低)の間に設定できます および11(最高) 。通常、ほとんどのサーバーは中央に配置されますが、サーバーがモンスターの場合は、11に設定して、CPU使用率レベルを監視します。
次に、変更を有効にする前に、変更が正しく機能していることをテストします。
sudo nginx -t
変更が正しく機能している場合は、次のように表示されます。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
サーバーを再起動して、変更を有効にします。
sudo systemctl restart nginx
systemctl status nginx
出力例:
オプション。 UFW構成
デフォルトでは、Ubuntuなどの他のディストリビューションとは異なり、UFWはDebian11Bullseyeにインストールされていません。ただし、UFWを使用している場合、またはファイアウォールの実行をより明確に把握したい場合は、以下の情報を使用してNginx用にUFWを構成してください。
UFWをインストールするには、次のコマンドを使用します。
sudo apt install ufw -y
次に、次のコマンドでUFWを有効にします。
sudo ufw enable
デフォルトでは、すべての着信接続がブロックされ、すべての発信が許可されます。
次に、次のように入力して、インストールしたアプリケーションを確認します。
sudo ufw app list
出力例(他のアプリケーションの大きなリストも表示されることに注意してください):
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
次に、すべてのオプションを含め、HTTP(ポート80)、HTTPS(ポート443)、またはフルでNginxを有効にできます。
HTTP(ポート80):
sudo ufw allow 'Nginx HTTP'
HTTP(ポート443):
sudo ufw allow 'Nginx HTTPS'
HTTPSとHTTPS(フル):
sudo ufw allow 'Nginx FULL'
チュートリアルでは、「Nginx(フル)」 有効になりました。
出力例:
Rules updated
Rules updated (v6)
次のコマンドを使用して、ファイアウォールルールがアクティブであることを確認します。
sudo ufw status
出力にリストされたルールが表示されます。
Status: active
To Action From
-- ------ ----
Nginx Full ALLOW Anywhere
Nginx Full (v6) ALLOW Anywhere (v6)
UFWを設定したら、インターネットブラウザにNginxランディングページが表示されることを確認してください。
http://your_server_ip
すべてがうまく機能している場合は、次のページにアクセスする必要があります:
Nginxサーバーの構成
サーバーのIPアドレスを設定する準備ができている必要があります。これを行う最も簡単な方法は、次の方法です。
サーバーのIPアドレスを見つける
サーバーのIPアドレスを設定する準備ができている必要があります。これを行う最も簡単な方法は、次の方法です。
curl -4 icanhazip.com
出力例:
XXX.XXX.XXX.XXX IP address
サイトソースディレクトリの設定
Nginxサーバーブロック (Apacheの仮想ホストと同様に)構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストできます。チュートリアルでは、 example.comというドメインを設定します 、ただし、これをドメイン名に置き換える必要があります 。
Nginxをインストールすると、プリインストールされたwwwディレクトリで作成されます。場所は/ var / www / html /にあります 。
まず、 example.comのディレクトリを作成します 、次のように、「-p」フラグを使用して必要な親ディレクトリを作成します。
sudo mkdir -p /var/www/example.com/html
次に、ディレクトリの所有者を割り当てる必要があります。
sudo chown -R $USER:$USER /var/www/your_domain/html
3番目に、ディレクトリのアクセス許可を割り当てます。これにより、所有者はファイルの読み取り、書き込み、および実行を行い、グループなどには読み取りと実行のアクセス許可のみを付与します。次のコマンドを入力できます:
sudo chmod -R 755 /var/www/your_domain
テストHTMLページを設定する
第4に、Nginxサーバーが動作していることを確認するために使用するテストページを作成します。
nano /var/www/your_domain/html/index.html
nanoエディターと作成した新しいファイルの内部。次のように入力します。
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>
ファイルを保存しますCTRL+ O、 次に、 CTRL + Xを終了します 。
Nginxサーバーブロックの作成
次に、Webサイトのサーバーブロックを作成します。次のように新しいサーバーブロックを作成します。
sudo nano /etc/nginx/sites-available/your_domain.conf
次のサンプルコードをブロックに貼り付けることができます。これは単なるHTTPのみの例です 基本的なテスト用。
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;
}
}
この例は、サーバーが2つのサーバー名「your_domain」をリッスンしていることを示しています。 ポート80で。
ルートディレクトリを、作成したルートディレクトリの名前/場所に変更する必要があります。
有効なNginxサーバーブロック
Nginxサーバーブロックを有効にするには、Nginxディレクトリで使用可能なサイトから有効になっているサイトに構成ファイルをリンクする必要があります。これは、次のようにln-sコマンドを使用して実行できます。
sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
最終構成とテスト実行
最終段階では、デフォルトの nginx.confを開く必要があります ファイル。
sudo nano /etc/nginx/nginx.conf
そして、次の行のコメントを外します。
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
次のok出力がある場合は、変更を行うためにNginxサーバーを再起動します。
sudo systemctl restart nginx
次に、インターネットブラウザを開き、サーバーのドメイン名を入力します。サーバーブロックが稼働していることを確認する必要があります。
Let'sEncryptのSSL無料証明書でNginxを保護する
理想的には、SSL証明書を使用したHTTPSでNginxを実行することをお勧めします。 。これを行う最良の方法は、 Let’s Encryptを使用することです。 非営利のインターネットセキュリティ研究グループ(ISRG)が運営する無料の自動化されたオープンな認証局 。
まず、certbotパッケージをインストールします 次のように:
sudo apt install python3-certbot-nginx -y
インストールしたら、次のコマンドを実行して証明書の作成を開始します。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com
これは、強制HTTPS 301リダイレクト、Strict-Transport-Securityヘッダー、およびOCSPステープリングを含む理想的なセットアップです。電子メールとドメイン名を要件に合わせて調整してください。
これで、URLは HTTPS://www.example.comになります HTTP://www.example.comの代わりに 。
古いHTTPURLを使用する場合は注意してください 、自動的に HTTPSにリダイレクトされます 。
Nginxサーバーログにアクセスする方法
Nginxログディレクトリ
デフォルトでは、すべてのNGINXアクセス/エラーログは、変更していない限り、次のコマンドで表示できるログディレクトリにあります。
まず、ログディレクトリに移動してファイルを一覧表示します。
cd /var/log/nginx && ls -l
次のアクセスファイルとエラーファイルがあります。
アクセスログ:
/var/log/nginx/access.log
エラーログ:
/var/log/nginx/error.log
sudo tail -f / location / of / log pathコマンドを使用して、ターミナルでログをリアルタイムで表示するには。
例:
sudo tail -f /var/log/nginx/access.log
もう1つのオプションは、最後のX行を印刷することです。たとえば、Xを30に置き換えて、-n30フラグを追加して30行を印刷します。 。
sudo tail -f /var/log/nginx/access.log -n 30
これらは、ログの読み取りのほんの一例です。
Nginxログローテーションを構成する方法
Nginxはログローテーションを自動的にインストールし、毎日ローテーションするデフォルトに設定します。以下に示すようにファイルにアクセスすることで、これらの設定を変更できます。
sudo nano /etc/nginx/logrotate.d/nginx
次に、類似していない場合でも同じファイル構造が表示されます。ここで内容を変更できます。ほとんどの場合、保持するログの数を変更したり、毎日から毎週に変更したりできます。 fail2banモニタリングなどのソフトウェアに特定のログ要件が必要な場合を除いて、これはデフォルトのままにしておく必要があります。
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
おそらく変更したい主な設定は次のとおりです。
- 毎日– これは、毎週、毎月に変更できます。これは毎日保管する必要があります。そうしないと、ログファイルを確認するのが困難になります。
- 回転14– これは、保持および削除するログの数です。したがって、最大で14個のログしかありません。7日分のログのみを保持する場合は、これを7に変更します。
何をしているのかわからない限り、他の設定には触れないことをお勧めします。
Nginxを更新する方法
Nginxは、新しいバージョンがリポジトリにヒットしたときにデフォルトで更新されます。アップグレードする前に、Nginxディレクトリ、または少なくとも nginx.confをバックアップすることを常にお勧めします。 ファイル。次のコマンドでどちらも実行できます。
nginx.confをバックアップする(強くお勧めします):
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf
必要に応じて、Nginxフォルダー全体をバックアップします。
sudo cp /etc/nginx/ /etc/nginx-bkup
次に、標準の更新コマンドを実行します。
sudo apt update
アップグレードが利用可能な場合は、アップグレードを実行します。
sudo apt upgrade
アップグレードまたはインストール中にこれを求めるプロンプトが表示される場合がありますが、事前に手動でこれを行うことは非常に重要です。複数のサイトの大規模なNginx構成の場合、GithubやGitlabなどにバックアップすることはさらに有益です。