Я пытаюсь принудительно перенаправить все запросы без 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.
Я бы просто удалил раздел третьего сервера {} и добавил 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