回答:
これを次のように1つのサーバーブロックに結合できます。
server {
    listen 80;
    listen 443 default_server ssl;
    # other directives
}
受け入れられた答えを明確にするには、省略する必要があります
SSL on;
0.8.21以降のnginxバージョンでは、次のものが必要です。
listen 443 ssl;
参照:
あなたが提案するような方法は知りませんが、確かに簡単で保守可能な方法があります。
共通のサーバー設定を別のファイル、つまり「serverFoo.conf」に移動し、次のincludeように別のserver {}ブロックに移動します。
server {
    listen 80;
    include serverFoo.conf;
}
server {
    listen 443 ssl;
    include serverFoo.conf;
}
server_name、ポートごとに異なる場合に最適です
                    listen 443 ssl;今から使用します。
                    listen行が正しく解釈されませんが、別の行に移動するとserver{}修正されます。
                    既に役立つ回答を拡張して、より完全な例を示します。
server {
    # Listen on port 80 and 443
    # on both IPv4 and IPv6
    listen 80;
    listen [::]:80 ipv6only=on;
    listen 443 ssl;
    listen [::]:443 ipv6only=on ssl;
    # Set website folder
    root /path/to/your/website;
    # Enable SSL
    ssl_certificate your-cert.pem;
    ssl_certificate_key your-cert.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;
}