どどんとふをdebian+nginxで動かすやり方(nginxセットアップ編)@公式鯖3rd

どどんとふをdebian+nginxで動かすやり方(nginxセットアップ編)@公式鯖3rdシリーズ

前回:OS編

今回:nginxセットアップ編

nginxの設定ですが、とにかく大量アクセスを捌くためにメモリをモリモリに食う設定をぶち込んでいます。
ちなみに、この設定で公式鯖のリクエスト量だとnginxのプロセスだけで1.5~2GBほど食いますので、メモリが2GBぐらいしかないVPSだとかなりの確率でOOM Killerが発動します。

debianの場合、nginxの設定ファイルは、/etc/nginx以下にあるので、順に設定をしていきましょう。
(SSLはletsencryptを使った場合で、SSLやipv6を使わない場合は、SSL関係の設定や「listen[::]:80」は不要)

ログの出力先は、デフォルトと全然違う場所を設定しているので、/etc/logrotate.d/nginxも併せて変更しています。

/etc/nginx/nginx.conf(全部は貼り付けていません。チューニングに関連する所だけです。)

worker_processes auto;
worker_rlimit_nofile 32768;
events {
worker_connections 16384;
multi_accept on;
use epoll;
}
http {
##
# Basic Settings
##

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 120;
types_hash_max_size 16384;
# server_tokens off;

server_names_hash_bucket_size 256;
server_name_in_redirect off;
#ログは、HDDに出力
access_log /srv/hdd/log/nginx/access.log;
error_log /srv/hdd/log/nginx/error.log;
}


続いて、/etc/nginx/site-enabled/ドメイン名(ここではwww.taruki.com)を設定します。(同じく一部抜粋です)
fastcgiの各種バッファサイズもモリモリにアサインします。
ちなみに、このSSL設定だと、SSL強度診断でA+取れます。
server {
listen 80;
listen [::]:80 ipv6only=on;
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/www.taruki.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.taruki.com/privkey.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparam.pem;

root /srv/ssd/www;
index index.html index.htm;

#どどんとふのFastCGIにリクエストを転送する処理(第壱~第四までlocation毎にfastcgi_passを変えて繰り返し)
server_name www.taruki.com;
location ~ ^/DodontoF_srv1/DodontoFServer.rb$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.html;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_ignore_client_abort on;
fastcgi_connect_timeout 120;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 256k;
fastcgi_buffers 128 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}

#設定ファイルを外部からアクセスできないように
location ~ /DodontoF_srv./src_r.*/ {
deny all;
}
location ~ /DodontoF_srv./src_b.*/ {
deny all;
}

#Flashで破損や存在しない画像をロードしようとした時にアクセスする破損ファイルアイコンの場所
#凄まじいログ量になるので、ログにも残さずに200を返す
location ^~ /DodontoF_srv./.*brokenImage.* {
return 200;
access_log off;
break;
}
}


で、最後に/etc/defaults/nginxにファイル・ディスクリプターの最大数をulimitを広げておく

ULIMIT="-n 65536"