Раздел вопрос-ответ Сделать nginx редирект на https и www

Что прописать в конфиге nginx, чтобы со всех хостов (http naked, http www, https naked) редиректы шли на https://www. Т.е. вот так:

http://example.com           -> https://www.example.com
http://www.example.com  -> https://www.example.com
https://example.com         -> https://www.example.com

Этот код конфига nginx делает редирект с naked на www, но этого явно недостаточно:

server {
	listen 80;
	server_name www.example.com example.com;
	root /var/projects/example.com/www;

	if ($http_host = "example.com") {
		rewrite ^ http://www.example.com$request_uri permanent;
	}
}

 

share

1 ответ

Реализацию nginx-редиректов можно реализовать по-разному, для редиректа всех типов урлов на https www я у себя сделал так в example.conf:

server {
	listen       80 default_server;
	server_name  example.com www.example.com;
	return       301 https://www.example.com$request_uri;
}

server {
	listen 443 ssl;
	root /var/projects/example.com/www;

	server_name www.example.com;

	if ($host = example.com) {
		rewrite ^(.*) https://www.example.com$request_uri? permanent;
	}
}
http://example.com/anypath 
http://www.example.com/anypath
https://example.com/anypath

Теперь все хосты будут редиректить c кодом 301 (постоянный редирект) на https://www.example.com/anypath. Браузер такой редирект закеширует и при следующем обращении сразу обратится через https и www.

Добавить комментарий
    как минимум 5 символов

    icon Вход в систему

    зарегистрироваться