Image

ナレッジベース → nginxサービスによるリクエスト処理速度の最適化

最適なnginxの設定により、リクエスト処理の速度を向上させることができます。共有ホスティングでは、通常すべての設定がホスティングプロバイダーの専門家によって行われていますが、仮想サーバーでサイトをホストする場合、すべての設定は自分で行う必要があります。

サイトの動作を高速化するために、nginxウェブサーバーを高速化するための設定があるかどうか確認することをお勧めします。

1. 基本設定の確認

nano /etc/nginx/nginx.conf

1.1 仮想サーバーのコア数を自動で決定するオプション

worker_processes auto;

1.2 圧縮設定

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;

1.3 http/2を有効にする

ホストファイルのサーバーセクションで、sslの後にhttp2を追加します。このオプションはhttpsの場合にのみ追加してください。

server {
     listen 89.xx.77.xx:443 ssl http2;
     listen [2a01:xx:4:x::xx]:443 ssl http2;

1.3.1 HTTP2の動作確認

nginx -t
service nginx restart
curl -I https://your-domain.tld

以下のような出力が得られます:

HTTP/2 200
server: nginx
content-type: text/html; charset=UTF-8
vary: Accept-Encoding
cache-control: no-cache, private
date: Tue, 26 Mar 2024 10:39:35 GMT

1.4 接続数の最大数を設定

デフォルトは768です。OSで指定された数値に変更します。

1.4.1 値を確認

ulimit -n

1024

1.4.2 nginx設定ファイルに設定

nano /etc/nginx/nginx.conf
events {
worker_connections 1024;
}

1.5 バッファサイズを調整

デフォルトでは、nginxは1ページ分のメモリバッファを使用します。キャッシュからのリクエストをより多く処理できるように、ホストの**http {}**セクション内の値を変更します。

nano /etc/nginx/conf.d/domain-tld.conf
http {
...

client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 4 4k;

...
}

1.6 リクエスト処理のタイムアウト設定

負荷が高く、待機時間が短い場合、nginxがphp-fpmからの応答を受信できない際にクライアントがエラーメッセージを受け取ることがあります。この場合、待機時間を延長する必要があります。

ただし、待機時間を増やすと、フラッディングやDDoS攻撃時にサーバーリソースがより多く消費されるため、注意が必要です。

nano /etc/nginx/conf.d/domain-tld.conf
http {
...

client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;

...
}

これで、nginxはより高速にリクエストを処理するようになります。すべての変更を行った後、設定ファイルにエラーがないか確認し、サービスを再起動して変更を適用します。

nginx -t
service nginx restart

完了です。





No Comments Yet