ウェブサイト検索

仮想ホストと SSL 証明書を使用して Nginx をインストールする方法


Nginx (Engine-x の略) は、無料のオープンソースで、強力、高性能、スケーラブルな HTTP およびリバース プロキシ サーバー、メールおよび標準 TCP/UDP プロキシです。サーバ。シンプルな構成言語を使用し、使用と構成が簡単です。 Nginx は、そのスケーラビリティとパフォーマンスにより、現在、高負荷のサイトに電力を供給するための推奨 Web サーバー ソフトウェアです。

この記事では、Nginx を HTTP サーバーとして使用する方法、Web コンテンツを提供するように Nginx を構成する方法、名前ベースの仮想ホストをセットアップする方法、および Ubuntu と CentOS で自己署名証明書を含む安全なデータ送信のための SSL を作成してインストールする方法について説明します。 。

Nginx Webサーバーをインストールする方法

まず、図に示すように、パッケージ マネージャーを使用して公式リポジトリから Nginx パッケージをインストールすることから始めます。

------------ On Ubuntu ------------ 
sudo apt update 
sudo apt install nginx 

------------ On CentOS ------------
sudo yum update 
sudo yum install epel-release 
sudo yum install nginx 

Nginx パッケージがインストールされたら、次のコマンドを使用して、とりあえずサービスを開始し、起動時の自動開始を有効にしてステータスを表示する必要があります。 Ubuntu では、パッケージが事前に構成されている間に自動的に起動して有効にする必要があることに注意してください。

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

この時点で、Nginx Web サーバーは稼働しているはずです。netstat コマンドでステータスを確認できます。

sudo netstat -tlpn | grep nginx

システムでファイアウォールが有効になっている場合は、HTTP および HTTPS トラフィックを許可するためにポート 80443 を開く必要があります。それぞれ、それを実行することによって。

------------ On CentOS ------------
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

------------ On Ubuntu ------------ 
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload 

Nginx のインストールをテストし、それが実行中で Web ページを提供できるかどうかを確認する理想的な方法は、Web ブラウザを開いてサーバーの IP を指定することです。

http://Your-IP-Address
OR
http://Your-Domain.com

インストールが機能していることは、次の画面に表示されます。

Nginx Webサーバーを構成する方法

CentOS と Ubuntu の両方で、Nginx の設定ファイルはディレクトリ /etc/nginx にあり、グローバル設定ファイルは /etc/nginx/nginx.conf にあります。

Nginx はディレクティブと呼ばれるさまざまな構成オプションによって制御されるモジュールで構成されています。 ディレクティブは、単純 (名前と値が ; で終わる形式) または ブロック ( で囲まれた追加の命令を持つ) のいずれかです。 {})。そして、 他のディレクティブを含むブロックディレクティブをコンテキストと呼びます。

すべてのディレクティブは、プロジェクト Web サイトの Nginx ドキュメントで包括的に説明されています。詳細については、それを参照してください。

スタンドアロン モードで Nginx を使用して静的コンテンツを提供する方法

基本レベルでは、Nginx を使用して、デフォルトのサーバー ブロックのみが使用されるスタンドアロン モードで HTML やメディア ファイルなどの静的コンテンツを提供できます (仮想ホストが構成されていない Apache に似ています)。

まず、メイン構成ファイルの構成構造について簡単に説明します。

 
sudo vim /etc/nginx/nginx.conf

この Nginx 設定ファイルを調べると、設定構造は次のようになります。これはメイン コンテキストと呼ばれ、他の多くの単純なディレクティブとブロック ディレクティブが含まれています。すべての Web トラフィックは http コンテキストで処理されます。

user  nginx;
worker_processes  1;
.....

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
.....

events {
       	.....
}

http {
	server{
		…….
	}
	.....
}

以下は、Nginx メイン設定 (/etc/nginx/nginx.conf) ファイルのサンプルです。上記の http ブロックには、Web サイト設定ファイル (仮想ホスト設定) の場所を Nginx に指示する include ディレクティブが含まれています。 。

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

   include /etc/nginx/mime.types;
   default_type application/octet-stream;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
	
    include /etc/nginx/conf.d/*.conf;
}

Ubuntu では、追加の include ディレクティブ (include /etc/nginx/sites-enabled/*;) も見つかります。ディレクトリ /etc /nginx/sites-enabled/ は、サイトを有効にするために、/etc/nginx/sites-available/ に作成された Web サイト設定ファイルへのシンボリックリンクを保存します。また、シンボリックリンクを削除すると、その特定のサイトが無効になります。

インストール ソースに基づいて、デフォルトの Web サイト設定ファイルは /etc/nginx/conf.d/default.conf にあります (公式の NGINX リポジトリからインストールした場合)および EPEL) または /etc/nginx/sites-enabled/default (Ubuntu リポジトリからインストールした場合)。

これは、テスト システムの /etc/nginx/conf.d/default.conf にあるデフォルトの nginx サーバー ブロックのサンプルです。

server {
    listen    80 default_server;
    listen    [::]:80 default_server;
    server_name    _;
    root           /var/www/html/;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
}

上記の設定におけるディレクティブの簡単な説明:

  • リッスン: サーバーがリッスンするポートを指定します。
  • server_name: サーバー名を定義します。サーバー名には、正確な名前、ワイルドカード名、または正規表現を使用できます。
  • ルート: Nginx が Web ページやその他のドキュメントを提供するディレクトリを指定します。
  • インデックス: 提供されるインデックス ファイルのタイプを指定します。
  • 場所: 特定のファイルとフォルダーに対するリクエストを処理するために使用されます。

Web ブラウザから、ホスト名 localhost またはその IP アドレスを使用してサーバーを指定すると、リクエストが処理され、ファイル /var/www/html/index.html が提供されます。 を実行し、イベントをすぐにアクセス ログ (/var/log/nginx/access.log) に 200 (OK) 応答とともに保存します。エラー (失敗したイベント) が発生した場合、メッセージがエラー ログ (/var/log/nginx/error.log) に記録されます。

Nginx へのログインの詳細については、「Nginx でカスタム アクセスまたはエラー ログ形式を構成する方法」を参照してください。

デフォルトのログ ファイルを使用する代わりに、「名前ベースの仮想ホスト (サーバー ブロック) の設定」セクションで後で説明するように、さまざまな Web サイトのカスタム ログ ファイルを定義できます。

Nginx で Web ページへのアクセスを制限する方法

Web サイト/アプリケーション、またはその一部へのアクセスを制限するために、基本的な HTTP 認証をセットアップできます。これは基本的に、HTTP サーバー全体、個々のサーバー ブロック、またはロケーション ブロックへのアクセスを制限するために使用できます。

まず、htpasswd ユーティリティを使用して、アクセス資格情報 (ユーザー名/パスワード) を保存するファイルを作成します。

 
yum install httpd-tools		#RHEL/CentOS
sudo apt install apache2-utils	#Debian/Ubuntu

例として、このリストにユーザー admin を追加してみましょう (できるだけ多くのユーザーを追加できます)。-c オプションはパスワード ファイルの指定に使用され、-B を使用してパスワードを暗号化します。 [Enter] を押すと、ユーザーのパスワードを入力するよう求められます。

sudo htpasswd -Bc /etc/nginx/conf.d/.htpasswd admin

次に、パスワード ファイルに適切なアクセス許可と所有権を割り当てましょう (Ubuntu ではユーザーとグループ nginx をwww-data に置き換えます)。

sudo chmod 640 /etc/nginx/conf.d/.htpasswd
sudo chown nginx:nginx /etc/nginx/conf.d/.htpasswd

前述したように、Web サーバー、単一の Web サイト (サーバー ブロックを使用)、または特定のディレクトリまたはファイルへのアクセスを制限できます。これを実現するには、2 つの便利なディレクティブを使用できます。

  • auth_basic – 「HTTP 基本認証」プロトコルを使用したユーザー名とパスワードの検証を有効にします。
  • auth_basic_user_file – 認証情報のファイルを指定します。

例として、ディレクトリ /var/www/html/protected をパスワードで保護する方法を示します。

server {
    listen         80 default_server;
    server_name    localhost;
    root           /var/www/html/;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
     
    location /protected/ {
        auth_basic              "Restricted Access!";
        auth_basic_user_file    /etc/nginx/conf.d/.htpasswd;
    }
}

ここで、変更を保存し、Nginx サービスを再起動します。

sudo systemctl restart nginx 

次回ブラウザで上記のディレクトリ (http://localhost/protected) を指定すると、ログイン認証情報 (ユーザー名 admin と選択したパスワード) を入力するよう求められます。 )。

ログインに成功すると、ディレクトリのコンテンツにアクセスできます。ログインに成功しないと、「401 Authorization Required」エラーが表示されます。

Nginx で名前ベースの仮想ホスト (サーバー ブロック) をセットアップする方法

サーバー コンテキストを使用すると、複数のドメイン/サイトを同じ物理マシンまたは仮想プライベート サーバー (VPS) に保存し、そこからサービスを提供できます。複数のサーバー ブロック (仮想ホストを表す) は、各サイト/ドメインの http コンテキスト内で宣言できます。 Nginx は、受信したリクエスト ヘッダーに基づいてリクエストを処理するサーバーを決定します。

それぞれが指定されたディレクトリにある次のダミー ドメインを使用して、この概念を示します。

  • werelinux-console.net – /var/www/html/wearelinux-console.net/
  • welovelinux.com – /var/www/html/welovelinux.com/

次に、各サイトのディレクトリに適切な権限を割り当てます。

sudo chmod -R 755 /var/www/html/wearelinux-console.net/public_html 
sudo chmod -R 755 /var/www/html/welovelinux.com/public_html 

次に、各 public_html ディレクトリ内にサンプルの index.html ファイルを作成します。

<html>
	<head>
		<title>www.wearelinux-console.net</title>
	</head>
<body>
	<h1>This is the index page of www.wearelinux-console.net</h1>
</body>
</html>

次に、/etc/httpd/conf.d ディレクトリ内に各サイトのサーバー ブロック設定ファイルを作成します。

sudo vi /etc/nginx/conf.d/wearelinux-console.net.conf
sudo vi /etc/nginx/conf.d/welovelinux.com.conf

次のサーバー ブロック宣言を wearelinux-console.net.conf ファイルに追加します。

server {
    listen         80;
    server_name  wearelinux-console.net;
    root           /var/www/html/wearelinux-console.net/public_html ;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
     
}

次に、次のサーバー ブロック宣言を welovelinux.com.conf ファイルに追加します。

server {
    listen         80;
    server_name    welovelinux.com;
    root           /var/www/html/welovelinux.com/public_html;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
     
}

最近の変更を適用するには、Nginx Web サーバーを再起動します。

sudo systemctl restart nginx

Web サーバーを上記のアドレスに指定すると、ダミー ドメインのメイン ページが表示されるはずです。

http://wearelinux-console.net
http://welovelinux.com

重要: SELinux が有効になっている場合、そのデフォルト設定では、Nginx がよく知られている承認された場所 (たとえば、設定の場合は /etc/nginx、ログの場合は /var/log/nginx、Web ファイルの場合は /var/www/html など)。 。

これは、SELinux を無効にするか、正しいセキュリティ コンテキストを設定することで対処できます。詳細については、Nginx Plus Web サイトの「Using Nginx and Nginx Plus with SELinux」ガイドを参照してください。

Nginx で SSL をインストールおよび構成する方法

SSL 証明書は、サイト上で安全な http (HTTPS) を有効にするのに役立ちます。これは、情報を暗号化することで、エンド ユーザーとサーバーの間に信頼できる安全な接続を確立するために不可欠です。あなたのサイトへ、あなたのサイトから、またはあなたのサイト内で送信されます。

自己署名証明書を作成してインストールする方法、および証明書署名リクエスト (CSR) を生成して認証局 (CA) から SSL 証明書を取得する方法について説明します。 Nginx で使用します。

自己署名証明書は無料で作成できるため、テスト目的や社内 LAN のみのサービスに使用するのに実質的に適しています。公開サーバーの場合は、信頼性を維持するために CA によって発行された証明書 (Let’s Encrypt など) を使用することを強くお勧めします。

自己署名証明書を作成するには、まず証明書を保存するディレクトリを作成します。

sudo mkdir /etc/nginx/ssl-certs/

次に、openssl コマンド ライン ツールを使用して自己署名証明書とキーを生成します。

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl-certs/nginx.key -out /etc/nginx/ssl-certs/nginx.crt

上記のコマンドで使用されるオプションについて簡単に説明します。

  • req -X509 – x509 証明書を作成していることを示します。
  • -nodes (NO DES) – 「キーを暗号化しない」を意味します。
  • -days 365 – 証明書が有効な日数を指定します。
  • -newkey rsa:2048 – RSA アルゴリズムを使用して生成されたキーが 2048 ビットである必要があることを指定します。
  • -keyout /etc/nginx/ssl-certs/nginx.key – RSA キーのフルパスを指定します。
  • -out /etc/nginx/ssl-certs/nginx.crt – 証明書のフルパスを指定します。

次に、仮想ホスト構成ファイルを開き、ポート 443 でリッスンするサーバー ブロック宣言に次の行を追加します。仮想ホスト ファイル /etc/nginx/conf.d/wearelinux-console.net.conf を使用してテストします。

sudo vi /etc/nginx/conf.d/wearelinux-console.net.conf

次に、ssl ディレクティブを nginx 構成ファイルに追加します。以下のようになります。

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;
    
    ssl on;
    ssl_certificate /etc/nginx/ssl-certs/nginx.crt;
    ssl_trusted_certificate /etc/nginx/ssl-certs/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl-certs/nginx.key;
    
    server_name  wearelinux-console.net;
    root           /var/www/html/wearelinux-console.net/public_html;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }

}

次に、Nginx を再起動し、ブラウザで次のアドレスを指定します。

https://www.wearelinux-console.net

CA から SSL 証明書を購入する場合は、次のように証明書署名要求 (CSR) を生成する必要があります。

sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/nginx/ssl-certs/example.com.key -out /etc/nginx/ssl-certs/example.com.csr

既存の秘密キーから CSR を作成することもできます。

sudo openssl req -key /etc/nginx/ssl-certs/example.com.key -new -out /etc/nginx/ssl-certs/example.com.csr

次に、 生成されたCSRCAに送信して、CA 署名付き SSL 証明書の発行をリクエストする必要があります。 CA から証明書を受け取ったら、上記のように構成できます。

こちらもお読みください: Nginx Web サーバーのセキュリティを確保、強化し、パフォーマンスを向上させるための究極のガイド

まとめ

この記事では、Nginx をインストールして構成する方法を説明しました。 SSL を使用して名前ベースの仮想ホスティングをセットアップし、Web サーバーとクライアント間のデータ送信を保護する方法について説明しました。

nginx のインストール/構成プロセス中に問題が発生した場合、またはご質問やご意見がある場合は、以下のフィードバック フォームを使用してご連絡ください。