LINUX.ORG.RU

История изменений

Исправление beastie, (текущая версия) :

За долгую практику я осел на таком варианте:

// simply redirect anything to https
server {
        listen    *:80 default_server;
        listen [::]:80 default_server;
        server_name    .example.org;
        return 301 https://$host$request_uri;
}

// catch any non www. requests and redirect them to www.
server {
        listen    *:443 default_server ssl http2;
        listen [::]:443 default_server ssl http2;
        server_name     .example.org;
        add_header Strict-Transport-Security "max-age=31536000";
        return 301 $scheme://www.example.org$request_uri;
}

// main config, explicit host name, actual host config goes here
server {
        listen    *:443 ssl http2;
        listen [::]:443 ssl http2;
        server_name     www.example.org;
        add_header Strict-Transport-Security "max-age=31536000";
        // ...
}

Преимущество: простой, внятный и быстый конфиг главного блока, куда попадают 99.99% пользователей.

Недостаток: слоупоки, приходящие на 80, могут получить до двух 301 (http → https, non-www → www) — но это не так важно, т.к. таких от силы 0.01%.

Исправление beastie, :

За долгую практику я осел на таком варианте:

// simply redirect anything to https
server {
        listen    *:80 default_server;
        listen [::]:80 default_server;
        server_name    .example.org;
        return 301 https://$host$request_uri;
}

// catch any non www. requests and redirect them to www.
server {
        listen    *:443 default_server ssl http2;
        listen [::]:443 default_server ssl http2;
        server_name     .example.org;
        add_header Strict-Transport-Security "max-age=31536000";
        return 301 $scheme://www.example.org$request_uri;
}

// main config, explicit host name, actual host config goes here
server {
        listen    *:443 ssl http2;
        listen [::]:443 ssl http2;
        server_name     www.example.org;
        add_header Strict-Transport-Security "max-age=31536000";
        // ...
}

Преимущество: простой и быстый конфиг главного блока, куда попадают 99.99% пользователей.

Недостаток: слоупоки, приходящие на 80, могут получить до двух 301 (http → https, non-www → www) — но это не так важно, т.к. таких от силы 0.01%.

Исправление beastie, :

За долгую практику я осел на таком варианте:

// simply redirect anything to https
server {
        listen    *:80 default_server;
        listen [::]:80 default_server;
        server_name    .example.org;
        return 301 https://$host$request_uri;
}

// catch any non www. requests and redirect them to www.
server {
        listen    *:443 default_server ssl http2;
        listen [::]:443 default_server ssl http2;
        server_name     .example.org;
        add_header Strict-Transport-Security "max-age=31536000";
        return 301 $scheme://www.example.org$request_uri;
}

// main config, explicit host name, actual host config goes here
server {
        listen    *:443 ssl http2;
        listen [::]:443 ssl http2;
        server_name     www.example.org;
        add_header Strict-Transport-Security "max-age=31536000";
        // ...
}

Исходная версия beastie, :

За долгую практику я осел на таком варианте:

// simply redirect anything to https
server {
        listen    *:80 default_server;
        listen [::]:80 default_server;
        server_name    .example.org;
        return 301 https://$host$request_uri;
}

// catch any non www. requests and redirect them to www.
server {
        listen *:443    default_server ssl http2;
        listen [::]:443 default_server ssl http2;
        server_name     .example.org;
        add_header Strict-Transport-Security "max-age=31536000";
        return 301 $scheme://www.example.org$request_uri;
}

// main config, explicit host name, actual host config goes here
server {
        listen    *:443 ssl http2;
        listen [::]:443 ssl http2;
        server_name     www.example.org;
        add_header Strict-Transport-Security "max-age=31536000";
        // ...
}