Ограничение количества методов сервера в файле конфигурации NGINX

Я пытаюсь принудительно перенаправить все запросы без www и https на https://www.example.com версию сайта. Это новый сайт, поэтому перенаправления не влияют на SEO. Я пытаюсь следовать документации для NGINX, найденной здесь: http://nginx.org/en/docs/http/converting_rewrite_rules.html , но между этим и добавленным certbot материалом я немного закончил сбит с толку и обеспокоен последствиями множественных перенаправлений.

Вот мой текущий файл конфигурации сервера:

server {
        listen 80;
        server_name example.com;
        # $scheme will get the http protocol
        # and 301 is best practice for tablet, phone, desktop and seo
        return 301 $scheme://www.example.com$request_uri;
}

server {
        server_name www.example.com;
        passenger_enabled on;
        rails_env    production;
        root         /home/deploy/example_app/current/public;

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

            listen [::]:443 ssl ipv6only=on; # managed by Certbot
            listen 443 ssl; # managed by Certbot
            ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
            ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
            include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
            ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}

server {
    if ($host = www.example.com) {
        return 301 https://$host$request_uri;
    }


    if ($host = example.com) {
        return 301 https://$host$request_uri;
    }


        listen 80;
        listen [::]:80 ipv6only=on;

        server_name www.example.com example.com;
    return 404;

}

Это нормально? Или мне эффективнее как-то закрепить? В документации nginx указано, что это Это неправильный, громоздкий и неэффективный способ. но я недоволен его текущей версией.

Если это важно, он работает как сайт Ruby on Rails, размещенный на Phusion Passenger + NGINX на VPS.

0
задан 30 January 2019 в 14:28
1 ответ

Я бы просто удалил раздел третьего сервера {} и добавил www.example.com к первому серверу { }. Итак, первая строка server_name выглядит так:

server_name example.com www.example.com;

И

return 301 https://www.example.com$request_uri;
нет причин для такого количества перенаправлений.

И либо укажите example.com в server_name во втором разделе server {}, либо добавьте новый раздел server {} для порта 443 с необходимой конфигурацией ssl, который имеет server_name = example.com, а затем перенаправляет на https : //www.example.com

0
ответ дан 5 December 2019 в 04:18

Теги

Похожие вопросы