OshiHa.com

ConoHaでAlpine Linux 3.8

Nginx の基本設定

2018/09/01  2018/09/05

◆◇◆ 【衝撃価格】VPS512MBプラン!月額630円/1時間1円【ConoHa】 ◆◇◆

1. Nginx の共通設定を変更

設定ファイルを編集する前に、設定ファイル(/etc/nginx/nginx.conf)をバックアップしておく。
alpine:~$ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.org

Nginx の共通設定を nginx.conf に記述する。
alpine:~$ sudo vi /etc/nginx/nginx.conf

# /etc/nginx/nginx.conf
# 実行ユーザの設定(デフォルトのまま)
user nginx;
# workerプロセス数の設定 (デフォルトのまま)
worker_processes auto;

pcre_jit on;
# エラーログの出力先の指定・ロギングレベルの設定(デフォルトのまま)
error_log /var/log/nginx/error.log warn;
# モジュールの読み込み(デフォルトのまま)
include /etc/nginx/modules/*.conf;

events {
	# 最大同時接続数の設定(デフォルトのまま)
	worker_connections 1024;
	# リクエストを同時に受け付ける(追加)
	multi_accept on;
}

http {
	# MIMEタイプと拡張子の関連付けを定義したファイルの読み込み(デフォルトのまま)
	include /etc/nginx/mime.types;
	# MIMEタイプを決定できなかったときに、以下のMIMEタイプを適応(デフォルトのまま)
	default_type application/octet-stream;
	# エラーページのフッタにNginxのバージョンを非表示にする(デフォルトのまま)
	server_tokens off;
	# クライアントからのリクエストをメモリにバッファリングするサイズ(デフォルトのまま)
	client_max_body_size 1m;
	# サーバ側でのキープアライブのタイムアウトの秒数を設定(デフォルトのまま)
	keepalive_timeout 65;
	# コンテンツファイルの読み込みとクライアントへのレスポンスの送信にsendfile APIを使う(デフォルトのまま)
	sendfile on;
	# 小さなパケットを待つことなく送信(デフォルトのまま)
	tcp_nodelay on;
	# sendfileが有効なとき、TCP_CORKソケットを利用(コメント解除)
	tcp_nopush on;

	# ssl_dhparamの設定(コメント解除)
	ssl_dhparam /etc/ssl/nginx/dh2048.pem;

	ssl_prefer_server_ciphers on;
	ssl_session_cache shared:SSL:2m;

	# 以下のssl、add_header関連を追加
	ssl_ciphers  'ECDH !aNULL !eNULL !SSLv2 !SSLv3';
	ssl_session_timeout 1440m;
	# レスポンスヘッダにStrict-Transport-Securityを付与
	add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
	# レスポンスヘッダにContent-Security-Policyを付与
	add_header Content-Security-Policy "default-src 'self'";
	# レスポンスヘッダにX-Content-Type-Optionsを付与
	add_header X-Content-Type-Options nosniff;
	# レスポンスヘッダにX-Frame-Optionsを付与
	add_header X-Frame-Options SAMEORIGIN;
	# レスポンスヘッダにX-XSS-Protectionを付与
	add_header X-XSS-Protection "1; mode=block";

	# gzip圧縮を有効化・各種設定(追加)
	gzip on;
	gzip_vary on;
	gzip_static on;
	gzip_proxied any;
	gzip_comp_level 6;
	gzip_buffers 16 8k;
	gzip_min_length 256;
	gzip_http_version 1.1;
	gzip_types	text/plain
			text/css
			text/xml
			image//bmp
			application/xml
			application/xhtml+xml
			application/rss+xml
			application/atom+xml
			application/javascript
			application/x-javascript
			application/json;

	# ログのフォーマットを設定(デフォルトのまま)
	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;
	# バーチャルサーバの読み込み(デフォルトのまま)
	include /etc/nginx/conf.d/*.conf;
}
注意

上記では HTTPヘッダに Content-Security-Policy を指定しているが、サイトの性質に適切に合わせてやらないと全体あるいは一部が表示されない、使えないといったトラブルが発生する。
そのため、一般にはコメント化を推奨。
#add_header Content-Security-Policy "default-src 'self'";

2. DH鍵パラメータファイルを作成

上記で指定した ssl_dhparam /etc/ssl/nginx/dh2048.pem; は、DH鍵交換に使用するパラメータファイルで、OpenSSLコマンドで作成する。

alpine:~$ sudo apk add openssl
alpine:~$ sudo mkdir /etc/ssl/nginx
alpine:~$ sudo openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048

3. Nginx の構文エラー確認・再起動

alpine:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

うまくいけば Nginx を再起動。
alpine:~$ sudo rc-service nginx restart


◆◇◆ 【衝撃価格】VPS512MBプラン!月額630円/1時間1円【ConoHa】 ◆◇◆

ConoHa VPSの攻略
Alpine Linux 3.8

TOP