search
LoginSignup
86

More than 1 year has passed since last update.

posted at

updated at

開発サーバーでもこれだけはやっておくnginxの設定

サンプルバージョンは下記。
nginx/1.10.1

最大同時接続数の上限を設定

nginxにおける同時クライアントの最大数は、worker_processes × worker_connectionsの数で決まる。

まずは、クライアントリクエストを処理するworker_processesを設定

worker_processes  2;

CPUのコア数=ワーカープロセス数となるので、下記コマンドで確認して値を設定。

grep processor /proc/cpuinfo | wc -l
2

次に、1つのワーカープロセスが同時に処理できる最大接続数を設定

events {
    worker_connections  1024;
}

こちらの数値は下記コマンドの値を参考にする。

ulimit -n
1024

サーバー情報を隠蔽する

http {
 server_tokens off;

ちなみにこの設定を行っても、バージョン情報は消えるがnginxを使っていることはバレてしまう。
専用のエラーページを用意してフォローがよいかも。

アクセスログの出力フォーマットを確認する

デフォルトでは、Apache互換の combinedが適用される。
独自に設定したい場合は、明示的に指定すること。
例) main という出力フォーマットにしたい場合

server{
    access_log  /var/log/nginx/log/host.access.log main;

※ mainというフォーマット定義は別途行っておくこと。

アクセスログの書き込みペースを少し調整する

随時書き込むでもいいが、例えば5秒起きに書き込む、などにするその分サーバーへの負荷を抑えられるだろう。
例) 前回出力してから5秒以上経過したら書き込む

server{
    access_log  /var/log/nginx/log/host.access.log main flush=5s;

KeepAliveの設定を、適宜変更する

デフォルトでは、 75になっている。
例) 65にしたい場合

http{
    keepalive_timeout  65;

sendfileをどうするか決める

sendfileは、ざっくりいうと、クライアントへのレスポンス処理をsendfileシステムコールというAPIを使って行うかどうかで、カーネル側でコンテンツの複写をもつことで、レスポンスの改善をはかる設定。
ただし、動作が不安定になったり、静的ファイルが更新されなかったり、芳しくない評判もある。
デフォルトでは、offになっているので、悩ましければそのままで良いかと。

http{
    sendfile off;

最大リクエストサイズの調整

クライアントから送信されるリクエストボディの最大許可量を設定。
デフォルトでは1MB。
例)無制限にする場合。

http{
    client_max_body_size 0;

クライアントに返すパケットの調整

ブラウザが1度のやりとりで受け取るパケット量。これが少ないと何度もやりとりが発生する為非効率。

server {
    proxy_buffers 8 64m;
    proxy_buffer_size 64m;

もしくは、いっそBufferingしたくないとき(ファイルDL等)はこちら。

proxy_request_buffering off;

デバッグしたい場合

location /debug/ {
    return 200 "access to $server_name : $server_port :  $uri";
}

. から始まるファイルへのアクセスを禁止

location ~ /\.$ {
   deny all;
}

PHP-FPMとApacheの設定の相対

pm.start_servers : StartServers : 起動時に作成される子プロセス
pm.min_spare_servers : MinSpareServers : アイドル状態の子プロセスの最小数
pm.max_spare_servers : MaxSpareServers : アイドル状態の子プロセスの最大数
pm.max_requests : MaxClients : 各子プロセスが再起動するまでのリクエスト数

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
86