NGINX はオープンソースの無料のHTTPサーバーソフトウェアです。 NGINXは、HTTPサーバー機能に加えて、電子メール(IMAP、POP3、およびSMTP)のプロキシサーバー、およびHTTP、TCP、およびUDPサーバーのリバースプロキシおよびロードバランサーとしても機能します。
NGINXの背後にある目標は、最速のWebサーバーを作成することであり、その卓越性を維持することは、依然としてNginxプロジェクトの中心的な目標です。 NGINXは、Webサーバーのパフォーマンスを測定するベンチマークでApacheやその他のサーバーを常に上回っており、W3Techによると現在最も人気のある使用済みWebサーバーです。
チュートリアルでは、 Let’sEncryptからの無料のTLS/SSL証明書を使用してFedora35にNginxをインストールして構成する方法を学習します。
- 推奨OS: Fedora Linux 35
- ユーザーアカウント: sudoまたはrootアクセス権を持つユーザーアカウント。
オペレーティングシステムの更新
Fedoraを更新します 既存のすべてのパッケージが最新であることを確認するためのオペレーティングシステム:
sudo dnf upgrade --refresh -y
チュートリアルでは、sudoコマンドを使用します およびsudoステータスがあると仮定 。
アカウントのsudoステータスを確認するには:
sudo whoami
sudoステータスを示す出力例:
[joshua@fedora ~]$ sudo whoami
root
既存または新規のsudoアカウントを設定するには、FedoraでのSudoersへのユーザーの追加に関するチュートリアルにアクセスしてください。 。
rootアカウントを使用するには 、rootパスワードを指定して次のコマンドを使用してログインします。
su
NginxStableまたはMainlineをインストールする
6か月のリリースを考えるとFedoraディストリビューションでNginxをインストールするのは非常に簡単であり、その期間中のパッケージの絶え間ない更新は、ほとんどの場合、Nginxが常に最新であることを意味します。
Fedoraは最新のパッケージを使用することに慣れているため、最初にメインラインリポジトリを有効にします。これは、Nginxが使用することをお勧めします。
sudo dnf module enable nginx:mainline
出力例:
タイプY 、次にENTERキーを押します インストールを続行します。
次に、ターミナルを開き、次のコマンドを実行してインストールプロセスを開始します。
sudo dnf install nginx
出力例:
タイプY 、次にENTERキーを押します インストールを続行します。
インストールしたら、Nginxビルドバージョンを確認してインストールを確認します。
nginx -v
出力例(メインラインの例を使用):
nginx version: nginx/1.21.3
デフォルトでは、Nginxサービスは、インストールされると有効になったりアクティブになったりしません。 Nginxを有効にするには、次のコマンドを使用します。
sudo systemctl enable nginx --now
次に、サービスステータスをチェックして、Nginxがエラーなしで実行されていることを確認します。
systemctl status nginx
出力例:
上記のように、ステータスはアクティブ(実行中)である必要があります 。この時点で、Nginxアプリケーションがインストールされています。
ファイアウォールルールの構成
デフォルトでは、インストールによってファイアウォールルールが標準のポート80または443ポートに自動的に追加されることはありません。 Nginxをインストールするとき。続行する前に、次のルールを設定する必要があります。これは、使用するポートによって異なりますが、すべてのオプションが一覧表示されています。
ポート80またはHTTPを開く:
sudo firewall-cmd --permanent --zone=public --add-service=http
ポート443またはHTTPSを開く:
sudo firewall-cmd --permanent --zone=public --add-service=https
ファイアウォールをリロードして変更を有効にします
sudo firewall-cmd --reload
Nginxを構成する
サーバーのIPアドレスを設定する準備ができている必要があります。これを行う最も簡単な方法は、次の方法です。
サーバーのIPアドレスを見つける
サーバーのIPアドレスを設定する準備をしておく必要があります。これを行う最も簡単な方法は、次の方法です。
curl -4 icanhazip.com
出力例:
XXX.XXX.XXX.XXX IP address
コマンドが機能しない場合は、curlパッケージがインストールされていない可能性があります。次のコマンドを実行します:
sudo dnf install curl -y
サーバーのIPアドレスを取得したら、お気に入りのインターネットブラウザを開き、デフォルトのランディングページが機能していることを確認します。
http://your_server_ip
インターネットブラウザに次のページが表示されます。
例:
サイトソースディレクトリの設定
チュートリアルでは、 example.comというドメインを設定します 、ただし、これをドメイン名に置き換える必要があります 。チュートリアルでは、Webディレクトリを作成し、親ディレクトリにサイトファイルを構成します / var / www / 。
まず、 example.comのディレクトリを作成します 、次のように、「-p」を使用します 必要な親ディレクトリを作成するためのフラグ:
sudo mkdir -p /var/www/your_domain/html
次に、ディレクトリの所有者を割り当てる必要があります。
sudo chown -R $USER:$USER /var/www/your_domain/html
3番目に、ディレクトリのアクセス許可を割り当てます。これにより、所有者はファイルの読み取り、書き込み、および実行を行い、グループなどには読み取りと実行のアクセス許可のみを付与します。次のコマンドを入力できます:
sudo chmod -R 755 /var/www/your_domain
または、 / usr / share / nginx / htmlを使用することもできます 代わりにディレクトリですが、 / var / www 新規ユーザーにはディレクトリ方式をお勧めします。
テスト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サーバーブロックの作成
デフォルトでは、Apache仮想ホストと同様にNginxサーバーブロックは /etc/nginx/conf.dで処理されます。 ディレクトリ。ただし、Nginxのインストールは、 conf.dのいずれかを利用するバージョンやディストリビューションによって異なります。 またはsites-available/ sites-enabled デフォルトでは。チュートリアルでは、サイトのディレクトリを使用して標準を維持します。
まず、サイトに必要なディレクトリを利用可能にする およびサイト対応。
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
次に、nginx.confファイルを開き、「include/etc/nginx/default.d/*.conf;」を削除またはコメントします。 。
sudo nano /etc/nginx/nginx.conf
次に、そのすぐ下にinclude “ /etc/nginx/sites-enabled/*.conf;”を追加します。 。
例のみ:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
###EDIT HERE###
# include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
}
上記のように、「#」 include conf.dにコメントが追加されました 行、およびサイト対応を含める 追加されました。
ファイルを保存します(CTRL + O) (CTRL + X)を終了します 。
次に、サーバーブロック構成ファイルを作成します。チュートリアルではyour_domain.confという名前が使用されますが、これには任意の名前を付けることができます。
sudo nano /etc/nginx/sites-available/your_domain.conf
次のサンプルコードをブロックに貼り付けることができます。これは単なるHTTPのみの例です 基本的なテスト用。
server {
listen 80;
listen [::]:80;
server_name your_domain www.your_domain;
root /var/www/your_domain/html;
index index.html index.htm;
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 dnf 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にリダイレクトされます 。
オプションで、証明書を自動的に更新するようにcronジョブを設定できます。 Certbotはこれを自動的に行うスクリプトを提供しており、最初にドライランを実行してすべてが機能していることを確認するためのテストを行うことができます。
sudo certbot renew --dry-run
すべてが機能している場合は、次のターミナルコマンドを使用してcrontabウィンドウを開きます。
sudo crontab -e
デフォルトでは、ほとんどのFedoraシステムにはCronがインストールされていません。インストールするには、次のコマンドを使用します。
sudo dnf install cronie -y
次のコマンドでcrontabを開きます。
sudo crontab -e
次に、自動更新する時刻を指定します。これは少なくとも毎日チェックする必要があり、証明書を更新する必要がある場合、スクリプトは証明書を更新しません。設定するのに適した時間を見つけるのに助けが必要な場合は、crontab.guru無料ツールを使用してください。
00 00 */1 * * /usr/sbin/certbot-auto renew
(SHIFT)を押してファイルを保存します および(:) 次に、(wa)、と入力します ファイルを保存し、(qa)を使用して同じ方法で終了します 。
新しいタスクの追加が成功したかどうかを確認するには、ターミナルに次の出力が表示されます。
crontab: installing new crontab
Nginxサービスの管理
サーバー上でNginxが正常に実行されたので、いくつかの管理基調講演は次のとおりです。
Nginxウェブサーバーを停止するには:
sudo systemctl stop nginx
Nginxウェブサーバーを起動するには:
sudo systemctl start nginx
Nginxウェブサーバーを再起動するには:
sudo systemctl restart nginx
Nginxウェブサーバーをリロードするには(再起動を必要としないマイナーな変更の場合) :
sudo systemctl reload nginx
サーバーの起動時にNginxを無効にするには:
sudo systemctl disable nginx
サーバーの起動時にNginxを起動するには(インストール時に自動的に有効になります) :
sudo systemctl enable nginx
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
これらはログの読み取りのほんの一例であり、grepも役立つ場合があります。
Nginxログローテーションを構成する方法
Nginxはログローテーションを自動的にインストールし、毎日ローテーションするデフォルトに設定します。以下に示すようにファイルにアクセスすることで、これらの設定を変更できます。
sudo nano /etc/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 dnf upgrade --refresh
アップグレードが利用可能な場合は、アップグレードを実行します。
アップグレードまたはインストール中にこれを求めるプロンプトが表示される場合がありますが、事前に手動でこれを行うことは非常に重要です。複数のサイトの大規模なNginx構成の場合、GithubやGitlabなどにバックアップすることはさらに有益です。
Nginxを削除(アンインストール)する方法
Nginxを使用しなくなった場合に削除するには、次のコマンドを使用してこれを実行できます。
sudo dnf autoremove nginx
このコマンドは、インストールに付属していた未使用の依存関係も削除します。
nginxモジュールをメインラインからデフォルトにリセットするには、次のコマンドを使用します。
sudo dnf modules reset nginx