-->






# --- セキュリティ設定 ---
# 安全な暗号化アルゴリズムだけを網羅して許可
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
# セッションごとに使い捨ての鍵を使う(前方秘匿性強化)
ssl_session_tickets off;
# --- 情報漏洩対策 ---
# nginx側のヘッダーと画面上の情報を最小限にする
server_tokens off;
# 上流から送られてくる使用言語情報を秘匿する
proxy_hide_header X-Powered-By;
# バックエンドサーバーのヘッダー情報を秘匿する
proxy_hide_header Server;
# PHPが生成するヘッダー情報を秘匿する
fastcgi_hide_header X-Powered-By;
#スニッフィング攻撃対策
# (ファイルの中身を勝手に推測して実行するのを禁止)
add_header X-Content-Type-Options "nosniff" always;
# --- Denial of Service(DoS)攻撃対策 ---
# ブラウザ等から送られてくるデータ容量を制限
# (巨大データ送信によるメモリ枯渇、ディスク容量枯渇の防止)
client_max_body_size 10m;
# ブラウザ等からサーバーに送られてくるヘッダーのサイズを制限
# (長いヘッダー情報送信によるメモリ枯渇、CPU枯渇の防止)
large_client_header_buffers 4 8k;
# Slowloris攻撃対策のためタイムアウト設定
# (通信を意図的に遅延させたコネクション上限の枯渇を防止)
client_header_timeout 20s;
client_body_timeout 20s;
# httpoxy脆弱性対策
# (HTTP_PROXYという環境変数を使った情報の盗み取りを防御)
proxy_set_header Proxy "";
# 一度アクセスHTTPSにアクセスすると、その後6ヶ月間はHTTPSアクセスに強制
# (HTTPでアクセスされた瞬間に攻撃者が通信を傍受するのを阻止)
add_header Strict-Transport-Security "max-age=15768000" always;
# 上記設定はHTTP通信でのテストが困難になるので、テスト段階ではこちら10分設定を推奨
#add_header Strict-Transport-Security "max-age=600" always;
# --- Content-Security-Policy(CSP)設定 ---
# default-src設定: 自分と同じドメインから配信されるファイルを許可
# https設定: HTTPS通信から送られるデータは許可
# script-src設定: 自サーバー内のJavaScript、またはHTML内のインラインと、テキストデータから変換されるJavaScriptを許可
# frame-ancestors設定: 他人がiframeを使って自分のサイトを埋め込むのを禁止
add_header Content-Security-Policy "default-src 'self' https: data: 'unsafe-inline' 'unsafe-eval'; frame-ancestors 'self';" always;

sudo service nginx restart