alpine　nginx.confと仮想サーバのconf

# confファイル

日本語訳付きのalpineのnginxのデフォルトconfファイルです。

## nginx.conf

```nginx.conf
# /etc/nginx/nginx.conf

user nginx;

# CPUコアの数に基づいて自動的にワーカープロセスの数を設定します。
# Set number of worker processes automatically based on number of CPU cores.
worker_processes auto;

# 正規表現にJITを使用して処理を高速化できます。
# Enables the use of JIT for regular expressions to speed-up their processing.
pcre_jit on;

# デフォルトのエラーロガーを設定します。
# Configures default error logger.
error_log /var/log/nginx/error.log warn;

# 動的モジュールをロードするためのディレクティブ付きのファイルを含みます。
# Includes files with directives to load dynamic modules.
include /etc/nginx/modules/*.conf;


events {
        # ワーカープロセスによって開くことができる同時接続の最大数。
        # The maximum number of simultaneous connections that can be opened by a worker process.
        worker_connections 1024;
}

http {
        # あるいはその応答のMIMEタイプに対するファイル名拡張子のマッピングを含み、デフォルトの種類を定義します。
        # Includes mapping of file name extensions to MIME types of responses and defines the default type.
        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        # ネームサーバは、上流のサーバの名前をアドレスに解決するために使用される。
        # Name servers used to resolve names of upstream servers into addresses.
        # LUAモジュールでTCPSocketとUDPSocketを使用する場合も必要です。
        # It's also needed when using tcpsocket and udpsocket in Lua modules.
        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;

        # jginxバージョンにクライアントに伝えないでください。デフォルトは 'on'です。
        # Don't tell nginx version to the clients. Default is 'on'.
        server_tokens off;

        # クライアント要求の最大許容ボディサイズを指定します。
        # Specifies the maximum accepted body size of a client request, as indicated by the request header Content-Length.
        # 指定されたコンテンツ長がこのサイズより大きい場合、クライアントはHTTPエラーコード413を受信する。
        # If the stated content length is greater than this size, then the client receives the HTTP error code 413.
        # 無効にするには0に設定してください。デフォルトは '1m'です。
        # Set to 0 to disable. Default is '1m'.
        client_max_body_size 1m;

        # sendfileは、カーネル内で1つのFDとその他のデータをコピーします。これは、read（）+ write（）よりも効率的です。デフォルトはオフです。
        # Sendfile copies data between one FD and other from within the kernel, which is more efficient than read() + write(). Default is off.
        sendfile on;

        # nginxは、部分フレームを使用する代わりに、1つのパケットにHTTPレスポンスヘッドを送信しようとします。デフォルトは 'OFF'です。
        # Causes nginx to attempt to send its HTTP response head in one packet, instead of using partial frames. Default is 'off'.
        tcp_nopush on;


        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.
        # 指定されたプロトコルを有効にします。デフォルトはTLSV1 TLSV1.1 TLSV1.2です。
        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.
        # ヒント：古代のクライアントをサポートする義務がない場合は、TLSV1.1を削除してください。
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

        # EDH暗号のためのDiffie-Hellmanパラメータを持つファイルのパス。
        # Path of the file with Diffie-Hellman parameters for EDH ciphers.
        # ヒント： `OpenSSL dhparam-out /etc/ssl/nginx/dh2048.pem 2048`
        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`
        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;

        # 私たちの暗号スイートがクライアント暗号を超えるより優先されるべきであることを指定します。
        # Specifies that our cipher suits should be preferred over client ciphers.
        # Default is 'off'.
        ssl_prefer_server_ciphers on;

        # 約8000セッションを保持できるサイズの共有SSLキャッシュを有効にします。
        # Enables a shared SSL cache with size that can hold around 8000 sessions.
        # Default is 'none'.
        ssl_session_cache shared:SSL:2m;

        # クライアントがセッションパラメータを再利用できる時間を指定します。
        # Specifies a time during which a client may reuse the session parameters.
        # Default is '5m'.
        ssl_session_timeout 1h;

        # TLSセッションチケットを無効にします（それらは安全ではありません）。
        # Disable TLS session tickets (they are insecure).
        # Default is 'on'.
        ssl_session_tickets off;


        # 応答のgzippingを有効にします。
        # Enable gzipping of responses.
        #gzip on;

        # RFC 2616で定義されているようにVary HTTPヘッダーを設定します。
        # Set the Vary HTTP header as defined in the RFC 2616.
        # Default is 'off'.
        gzip_vary on;


        # WebSocketsをプロキシするためのヘルパー変数。
        # Helper variable for proxying websockets.
        map $http_upgrade $connection_upgrade {
                default upgrade;
                '' close;
        }


        # メインログ形式を指定します。
        # Specifies the main log format.
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

        # バッファ付きログ書き込みのパス、フォーマット、および設定を設定します。
        # Sets the path, format, and configuration for a buffered log write.
        access_log /var/log/nginx/access.log main;


        # 仮想ホスト設定を含みます。
        # Includes virtual hosts configs.
        include /etc/nginx/http.d/*.conf;

        # 警告：このディレクトリはもう仮想ホストに使用しないでください。
        # WARNING: Don't use this directory for virtual hosts anymore.
        # これには、Alpine 3.14のルートコンテキストに移動されます。
        # This include will be moved to the root context in Alpine 3.14.
        #include /etc/nginx/conf.d/*.conf;
}

# ヒント：Stream Moduleを使用すると、コメントを外します。
# TIP: Uncomment if you use stream module.
#include /etc/nginx/stream.conf;
```

## 仮想サーバーのデフォルト設定

```default.conf
# これは、404を返すデフォルトのサイト構成です。その他のVirtualHostへの偶然へのアクセスを防ぎます。
# This is a default site configuration which will simply return 404, preventing chance access to any other virtualhost.

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

        # すべてが404です
        # Everything is a 404
        location / {
                return 404;
        }

        # 戻り404の再帰を防ぐためにこれを必要とするかもしれません。
        # You may need this to prevent return 404 recursion.
        location = /404.html {
                internal;
        }
}
```

## nginx公式のalpineDockerイメージのdefault.conf

```default.conf
server {                                                                                                                                                                  
    listen       80;                                                                                                                                                      
    listen  [::]:80;                                                                                                                                                      
    server_name  localhost;                                                                                                                                               
                                                                                                                                                                          
    #charset koi8-r;                                                                                                                                                      
    #access_log  /var/log/nginx/host.access.log  main;                                                                                                                    
                                                                                                                                                                          
    location / {                                                                                                                                                          
        root   /usr/share/nginx/html;                                                                                                                                     
        index  index.html index.htm;                                                                                                                                      
    }                                                                                                                                                                     
                                                                                                                                                                          
    #error_page  404              /404.html;                                                                                                                              
                                                                                                                                                                          
    # redirect server error pages to the static page /50x.html                                                                                                            
    #                                                                                                                                                                     
    error_page   500 502 503 504  /50x.html;                                                                                                                              
    location = /50x.html {                                                                                                                                                
        root   /usr/share/nginx/html;                                                                                                                                     
    }                                                                                                                                                                     
                                                                                                                                                                          
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80                                                                                                           
    #                                                                                                                                                                     
    #location ~ \.php$ {                                                                                                                                                  
    #    proxy_pass   http://127.0.0.1;                                                                                                                                   
    #}                                                                                                                                                                    
                                                                                                                                                                          
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000                                                                                                  
    #                                                                                                                                                                     
    #location ~ \.php$ {                                                                                                                                                  
    #    root           html;                                                                                                                                             
    #    fastcgi_pass   127.0.0.1:9000;                                                                                                                                   
    #    fastcgi_index  index.php;                                                                                                                                        
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;                                                                                                    
    #    include        fastcgi_params;                                                                                                                                   
    #}                                                                                                                                                                    
                                                                                                                                                                          
    # deny access to .htaccess files, if Apache's document root                                                                                                           
    # concurs with nginx's one                                                                                                                                            
    #                                                                                                                                                                     
    #location ~ /\.ht {                                                                                                                                                   
    #    deny  all;                                                                                                                                                       
    #}                                                                                                                                                                    
}                                                                                                                                                                         
```