Редирект с http на https в nginx

yanus
На сайте с 21.01.2009
Offline
348
19366

Мне нужно настроить редирект для сайта так, чтобы все посетители редиректились со страниц http на страницы https. Как я понял, настраивать нужно в nginx

Попробовал несколько вариантов, найденных в сети, - постоянно 400 Bad Request

Помогите настроить.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

server {

listen 80;

server_name domain.com;

rewrite ^/(.*)$ https://domain.com/$1 permanent;

}

server {

listen 443 ssl;

server_name domain.com;

...

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
yanus
На сайте с 21.01.2009
Offline
348
#2
Оптимизайка:
server {
listen 80;
server_name domain.com;
rewrite ^/(.*)$ https://domain.com/$1 permanent;
}

server {
listen 443 ssl;

server_name domain.com;
...

А если все в одной дериктиве server, типа:

server {

listen 80;

listen 443 ssl;

server_name domain.com;

rewrite ^/(.*)$ https://domain.com/$1 permanent;

.....

Тогда как?

LM
На сайте с 18.10.2009
Offline
117
#3
yanus:
А если все в одной дериктиве server, типа:
server {
listen 80;
listen 443 ssl;
server_name domain.com;
rewrite ^/(.*)$ https://domain.com/$1 permanent;
.....

Тогда как?

server {
listen 80;
listen 443 ssl;
server_name domain.com;

if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
yanus
На сайте с 21.01.2009
Offline
348
#4
LinuxMan:
server {
listen 80;
listen 443 ssl;
server_name domain.com;

if ($scheme = http) {
return 301 https://$server_name$request_uri;
}

А в "return 301 https://$server_name$request_uri;" $server_name нужно менять на адрес домена или оставить как есть?

LM
На сайте с 18.10.2009
Offline
117
#5
yanus:
$server_name нужно менять на адрес домена или оставить как есть?

Оставьте, как есть. Эта переменная равна значению server_name.

yanus
На сайте с 21.01.2009
Offline
348
#6
LinuxMan:
Оставьте, как есть. Эта переменная равна значению server_name.

А если в server_name - domen.ru www.domen.ru;

сработает или в server_name должно быть одно значение?

Попробовал, ngnix ругнулся:

[emerg]: invalid number of arguments in "return" directive in /etc/nginx/nginx.conf:5557
LM
На сайте с 18.10.2009
Offline
117
#7
yanus:
А если в server_name - domen.ru www.domen.ru;
сработает или в server_name должно быть одно значение?

Будет переадресация как с варианта с www, так и без.

yanus:
Попробовал, ngnix ругнулся

Какая версия nginx? Можно попробовать так:


if ($scheme = http) {
rewrite ^ https://$server_name$request_uri permanent;
}
yanus
На сайте с 21.01.2009
Offline
348
#8
LinuxMan:
Какая версия nginx -v?

nginx version: nginx/0.7.67

---------- Добавлено 25.10.2013 в 16:51 ----------

Решил пойти по пути, предложенному Оптимизайкой. Раскидал одну директиву server на две и все заработало. Все спасибо за помощь.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий