Nginxの設定を忘れるのでメモする


はじめに

Nginxの設定を忘れるのでメモ。

環境

$ hostnamectl status
   Static hostname: ---
         Icon name: computer-vm
           Chassis: vm
        Machine ID: ---
           Boot ID: ---
    Virtualization: microsoft
  Operating System: Ubuntu 20.04.4 LTS
            Kernel: Linux 5.4.0-107-generic
      Architecture: x86-64

Let's Encrypt

Let's Encryptの更新用の設定。

server {
  listen 80 default_server;
  listen [::]:80 default_server;

  location ^~ /.well-known/acme-challenge/ {
    default_type "text/plain";
    root      /usr/share/nginx/html;
  }

  location / {
    return 301 https://$host$request_uri;
  }
}

上記設定でSSL証明書の更新を行うときは、下記コマンドでSSL証明書の発行リクエストを実行。

$ sudo certbot certonly --webroot -w /usr/share/nginx/html -d blog.long-in.net

ssl_dhparam の設定

ssl_dhparam を設定することでより通信をセキュアにできます。下記コマンドでファイルを生成します。

$ sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096

Nginx に設定する場合、下記設定を追記します。

ssl_dhparam "/etc/nginx/dhparam.pem";

設定例

下記の設定例では、アプリケーションへリバースプロキシを行っている。

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name <domain>;

  # SSL
  ssl_session_timeout 1d;
  ssl_session_cache shared:MozSSL:10m;
  ssl_session_tickets off;
  ssl_protocols TLSv1.2 TLSv1.3;
  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_prefer_server_ciphers off;

  ssl_certificate "/etc/letsencrypt/live/<domain>/fullchain.pem";
  ssl_certificate_key "/etc/letsencrypt/live/<domain>/privkey.pem";
  ssl_dhparam "/etc/nginx/dhparam.pem";

  # HSTS
  add_header Strict-Transport-Security "max-age=63072000" always;

  # OCSP stapling
  ssl_stapling on;
  ssl_stapling_verify on;

  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
      root   html;
  }

  resolver 8.8.8.8 1.1.1.1 8.8.4.4 valid=15m;
  resolver_timeout 10s;

  location /api/v1/ {
    proxy_pass http://127.0.0.1:8080;
  }

}

以上、終わり。