planet-green.com

[備忘録] EC-CUBE4をnginx上で動かす



EC-CUBE4をnginx環境にインストールした時の作業メモ。

EC-CUBE 3(前バージョン)とnginxの組み合わせであればGoogleで検索するといくつか設定例が出てきますが、そのままEC-CUBE 4に適用するとセキュリティ上の問題があるので、ここに安全な設定方法について記したいと思います。

nginxの設定

#
# EC-CUBE 4
#
server {
	listen 80;
	server_name hoge-shop.com; #ドメイン

	root /home/hoge-shop/pubic/; #ドキュメントルート
	index index.html index.htm index.php;
	access_log /var/log/nginx/hoge-shop.log;
	error_log /var/log/nginx/hoge-shop.error.log;
       
	client_max_body_size 16M; #アップロード最大サイズ。商品画像を扱うのでこのくらいあった方がいいでしょう。

	location / {
		try_files $uri $uri/ /index.php?$args;
	}

	# クリックジャッキング対策
	add_header X-Frame-Options SAMEORIGIN;

	# XSS対策
	add_header X-XSS-Protection "1; mode=block"; 
	add_header X-Content-Type-Options nosniff;

	# 403 Forbidden対応方法
	# ページアクセスできない時シンボリックリンクが有効になっていない可能性あります、
	# オプションを追加してください
	disable_symlinks on from=$document_root;

	# Authorization ヘッダが取得できない環境への対応
	#proxy_set_header Authorization $http_authorization;

	# .htaccess, .htpasswd, .env等の.(ピリオド)から始まる不可視ファイルをアクセス禁止に
	location ~ /\. {
	 	 deny all;
	}

	# アクセス禁止ファイル
	location ~* (?:/(?:src|app|tests|var|vendor|node_modules|codeception|bin)/.*|/(?:composer|COPYING|Procfile|app.json|gulpfile.js|package.json|package-lock.json|web.config))$ {
		deny all;
	}
	
	# 画像などの静的ファイル
	location ~* ^.+\.(?:mp4|ttf|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|ppt|tar|mid|midi|wav|bmp|rtf|wmv)$ {
		# ログ出力の有無はお好みで
		access_log off;
		log_not_found off; 
		if (-f $request_filename) {
			#ブラウザキャッシュの有効時間。ここもお好みに応じて。
			expires 60m;
			break;
		}
	}

	# PHP設定
	location ~ \.php$ {
		# このディレクティブの設定はディストリビューション/パッケージに依る。
		# (これはCentOS 7での設定例)
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		include fastcgi_params;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		# Authorization ヘッダが取得できない環境への対応
		#fastcgi_param HTTP_AUTHORIZATION $http_authorization; 
		fastcgi_pass   127.0.0.1:9000;
	}
}

»ç¶šãã‚’読む

コメント