nginx 設定ファイル ドメイン別分割 と 最適化
一台のサーバーで、仮想的に複数のドメインを運用するサーバー技術で、利用するドメインすべてが同じIPアドレスを使用するが、ドメイン名でアクセスできるので、あたかも複数のサーバで運用しているように見える。
このファイルの設定でnginxを制御する。
default.confから、「バーチャルホスト名.conf」にし、
バーチャルホストごとに、server設定を行うことで、
nginx.confでのバーチャルホスト設定=server定義が外出しされ、且つ、バーチャルホスト別のファイルになるので、管理が容易になる。
sudo cp default.conf arakan60.conf
sudo cp default.conf arakoki70.conf
sudo cp default.conf mydns.conf
元のファイルをリネームして保存
sudo mv default.conf default.conf_b
sudo nginx -s reload
sudo systemctl restart nginx
user nginx;
worker_processes auto;
worker_rlimit_nofile 100000;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
multi_accept on;
use epoll;
}
http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
access_log off;
keepalive_timeout 10;
client_header_timeout 10;
client_body_timeout 10;
reset_timedout_connection on;
send_timeout 10;
limit_conn_zone $binary_remote_addr zone=addr:5m;
limit_conn addr 100;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Perfect Forward Secrecy(PFS)を有効にする Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
# 安全でない暗号化スイートはサポートしない
# ssl_ciphers 'ECDH !aNULL !eNULL !SSLv2 !SSLv3';
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";
#HTTP Strict Transport Security --- HSTSの設定
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_min_length 1024;
gzip_comp_level 6;
gzip_types text/plain
text/xml
text/css
text/javascript
image/gif
image/png
image/jpeg
application/javascript
application/x-javascript
application/json
application/xml
application/xml+rss
application/font-woff
application/font-tff
application/octet-stream;
include /etc/nginx/conf.d/*.conf;
}
worker_processes auto; - Nginx本体のプロセス数を、autoにする。
worker_rlimit_nofile 100000; - workerプロセスが開ける最大ファイル数。
too many open files問題の回避。
multi_accept on; - クライアントからのリクエストをできるだけ受け取る。
use epoll; - Linuxカーネル2.6以上の場合はepoll、BSDの場合kqueue。
---------------------------------------------------------------------------------
server_tokens off; - エラー画面でのnginxバージョン番号を非表示にする。
sendfile on; - ハードディスクio処理とsocket-io処理のバランスを取る。
tcp_nopush on; - 一つのデータパッケージに全てのヘッダー情報を含まれる
keepalive_timeout 10; - keep-aliveタイムアウト時間。
client_header_timeout 10; - クライアントタイムアウト時間。
client_body_timeout 10; - クライアントタイムアウト時間。
reset_timedout_connection on; - 非アクティブクライアントの接続をクローズ。
send_timeout 10;- クライアントへの送信タイムアウト。
limit_conn_zone $binary_remote_addr zone=addr:5m; - 各種keyの共有メモリ設定。
limit_conn addr 100; - keyの最大コネクション数。
gzip_comp_level 6; - 圧縮レベル設定、1-9。
server {
listen 80;
server_name www.arakan60.com;
return 301 https://arakan60.com$request_uri;
}
server {
listen 443 ssl;
server_name www.arakan60.com;
# ssl on;
ssl_certificate /etc/letsencrypt/live/www.arakan60.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.arakan60.com/privkey.pem;
return 301 https://arakan60.com$request_uri;
}
server {
listen 80;
server_name arakan60.com;
return 301 https://arakan60.com$request_uri;
}
server {
listen 443 ssl;
server_name arakan60.com;
root /home/yaopi/www/wordpress;
index index.htm index.php;
# ssl on;
ssl_certificate /etc/letsencrypt/live/arakan60.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/arakan60.com/privkey.pem;
# デフォルト 60秒を300秒までアップします。
fastcgi_read_timeout 300;
error_page 404 /wp_404.html;
location = /wp_404.html {
root /home/yaopi/www/wordpress;
internal;
}
client_max_body_size 500M; # ←追加
location / {
try_files $uri $uri/ /index.php;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
①.【 fastcgi_pass 127.0.0.1:9000; 】
②.【 fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; 】
の、2通りの設定方法がある。
/etc/php/7.3/fpm/pool.d/www.conf
の listen ディレクティブで定義する。
listen = 127.0.0.1:9000
listen = /var/run/php/php7.3-fpm.sock
(2019.12.11)