Nginxは、世界で最も広く使用されているWebサーバーの1つは言うまでもなく、無料のオープンソースWebサーバーです。リバースプロキシ、メールプロキシ、ロードバランサー、キャッシングサーバーとして使用できます。 Nginxは拡張性が高く、最大のパフォーマンスと安定性を実現するように特別に設計されています。イベント駆動型アーキテクチャを使用し、すべての着信要求を単一のスレッドで処理します。
Nginxには、PHPバックエンドから提供される動的コンテンツをキャッシュするために使用できるFastCGIモジュールが付属しています。 FastCGIキャッシュを使用してNginxを設定した後、Redis、Varnish、Memcacheなどの他のキャッシュソリューションを設定する必要はありません。
このチュートリアルでは、Ubuntu18.04でLEMPを使用してNginxFastCGIキャッシュを設定する方法を示します。
前提条件
- Atlantic.Netクラウドプラットフォーム上の新しいUbuntu18.04VPS
- サーバーで構成されているrootパスワード
ステップ1-Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。オペレーティングシステムとしてUbuntu18.04を選択し、少なくとも1GBのRAMを搭載した新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
Ubuntu 18.04サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
apt-get update -y
ステップ2–LEMPサーバーをインストールする
サーバーにLEMP(Nginx、PHP、PHP-FPM)をインストールすることから始めましょう。
apt-get install nginx php php-cli php-fpm -y
上記のコマンドはシステムにApacheWebサーバーもインストールするため、Apacheサービスを停止して無効にする必要があります。
systemctl stop apache2 systemctl disable apache2
次に、次のコマンドを使用してNginxおよびPHP-FPMサービスを開始します。
systemctl start nginx systemctl start php7.2-fpm
終了したら、次のステップに進むことができます。
ステップ3–サンプルWebサイトを作成する
まず、次のコマンドを使用してWebサイトのディレクトリを作成します。
mkdir /var/www/html/example.com
次に、Webサイトディレクトリ内にサンプルのinfo.phpファイルを作成します。
nano /var/www/html/example.com/info.php
次の行を追加します:
<?php phpinfo(); ?>
ファイルを保存して閉じます。次に、Webサイトの所有権をwww-data userに変更します:
chown -R www-data:www-data /var/www/html/example.com chmod -R 755 /var/www/html/example.com
終了したら、次のステップに進むことができます。
ステップ4–FastCGIキャッシュを使用してNginxを構成する
次に、新しいNginx仮想ホスト構成ファイルを作成してWebサイトにサービスを提供し、FastCGIキャッシュを有効にする必要があります。
nano /etc/nginx/sites-available/example.com.conf
次の行を追加します:
# Enable FastCGI Support fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=nginxcache:150m max_size=1g inactive=60m use_temp_path=off; fastcgi_cache_key "$scheme$request_method$host$request_uri"; add_header X-Cache $upstream_cache_status; server { listen 80; root /var/www/html/example.com; client_max_body_size 256M; index info.php; server_name example.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location = /favicon.ico { access_log off; log_not_found off; } #Disable caching for login session, user cookie, POST request, query string, site map and feeds set $skip_cache 0; if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } # Enable caching for your website. location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_index info.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors off; fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; fastcgi_connect_timeout 600; fastcgi_send_timeout 600; fastcgi_read_timeout 600; fastcgi_cache nginxcache; fastcgi_cache_valid 200 301 302 60m; fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503; fastcgi_cache_min_uses 1; fastcgi_cache_lock on; } }
終了したらファイルを保存して閉じ、次のコマンドで構文エラーがないかNginxを確認します。
nginx -t
次の出力が得られるはずです:
次に、次のコマンドを使用してNginx仮想ホストファイルを有効にします。
ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
最後に、Nginxサービスをリロードして、変更を適用します。
systemctl restart nginx
上記の構成ファイルの各ディレクティブの簡単な説明を以下に示します。
- fastcgi_cache_path FastCGIキャッシュを作成し、キャッシュの場所、サイズ(150M)、max_size(1G)のメモリゾーン名(nginxcache)を指定し、キャッシュルックアップのキーを定義します。
- add_header リクエストがFastCGIキャッシュから提供されたかどうかを検証するために使用されます。
- fastcgi php-fpmソケットのパスを指定します。
- fastcgi_cache fastcgi_cache_pathディレクティブのメモリゾーンを使用して指定したキャッシュを有効にします。
- fastcgi_cache_valid ステータスコード200、301、302でキャッシュ時間を設定すると、60分間キャッシュされます。
- fastcgi_cache_lock アップストリームのPHP-FPMサーバーを介した最初のリクエストのみを許可します。
ステップ5–NginxFastCGIキャッシュをテストする
この時点で、Nginxがインストールされ、FastCGIキャッシュをサポートするように構成されています。キャッシュが機能しているかどうかを確認するときが来ました。
Webブラウザーを開き、URLhttp://example.comを使用してNginxWebサーバーにアクセスし、ページを数回リロードします。
次に、ターミナルを開き、次のコマンドを実行してhttp応答ヘッダーをフェッチします。
curl -I http://example.com
次の出力が得られるはずです:
HTTP/1.1 200 OK Server: nginx/1.14.0 (Ubuntu) Date: Fri, 24 Apr 2020 16:07:24 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Cache: HIT
上記の出力から、X -キャッシュ:HIT 応答がキャッシュから提供されたことを示します。
結論
おめでとう! FastCGIキャッシュをサポートするNginxを正常に構成しました。キャッシュを有効にすると、PHPでレンダリングしなくてもページが読み込まれるため、パフォーマンスが大幅に向上することに気付くはずです。 Atlantic.NetのVPSホスティングサービスを使用して、NginxでFastCGIキャッシュを今すぐお試しください。