rewrite на https [nginx]

evrei

Гуру форума
Регистрация
15 Мар 2007
Сообщения
121
Реакции
52
Добрый день,
подскажите как в nginx конфиг настроит.
Хочу использовать только https и хочу сделать редирект с http на https, но руки кривые.

есть цертификат на домен с "www" https работает но домен доступен с и без www.
надо всё только через https.

спасибо
 
Код:
#AUTOMATICALLY GENERATED - DO NO EDIT!

#server {
# listen 80;
# server_name medomain.com www.medomain.com;
# return 301 https://$host$request_uri;
#}

server {
listen *:443 ssl;
ssl_certificate /etc/ssl/certs/mpd-bundle.crt;
ssl_certificate_key /etc/ssl/private/medomain_com.key;
server_name medomain.com www.medomain.com;

# Redirect HTTP to HTTPS
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}

access_log /var/log/nginx/medomaincom.access.log;
error_log /var/log/nginx/medomaincom.error.log;

root /srv/medomain.com/www;
index index.html index.htm index.php;
 
Я у себя в секции server {} вставляю:
Код:
include /etc/nginx/redirect.conf
А в этом файле прописано:
Код:
if ($ssl_protocol = "") {
        rewrite ^/(.*) https://$server_name/$1 permanent;
}
 
Ну все эти способы должны работать, по сути одно и то же. evrei, а в чем проблема у вас сейчас? Вон в принципе вместо

Код:
# Redirect HTTP to HTTPS
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
вставьте вариант Для просмотра ссылки Войди или Зарегистрируйся - должно работать. Хотяя... то что у вас, кажется может приводить к циклической переадресации.
Попробуйте так:
Код:
server {
listen 80;
 server_name medomain.com www.medomain.com;
if ($ssl_protocol = "") {
rewrite ^/(.*) https://$server_name/$1 permanent;
     }
}

server {
listen *:443 ssl;
ssl_certificate /etc/ssl/certs/mpd-bundle.crt;
ssl_certificate_key /etc/ssl/private/medomain_com.key;
server_name medomain.com www.medomain.com;

access_log /var/log/nginx/medomaincom.access.log;
error_log /var/log/nginx/medomaincom.error.log;

root /srv/medomain.com/www;
index index.html index.htm index.php;
 
у меня vps, поставил ajenti-v. всё работает.

добавил домен. работает только через *433. но rewrite с *80 не работает и домен допустен с www и без www, а надо чтобы только с www (SSL Certificate).

это новый кусок. забыл убрать. так тоже не получилось.
Код:
# Redirect HTTP to HTTPS
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
 
В общем и целом, вам уже тут несколько раз сказали как и что, привели примеры. Если у вас что-то всё равно не получается - это уже частные случаи, с которыми на форуме тут разобраться сложно, нужно смотреть конфиг сервера и что именно не работает, пробовать варианты.
 
сделал так.

Код:
server {
            listen 80 default_server;
            server_name 111.111.111.111 domain.com;
            return 301 https://www.domain.com$request_uri;
}

server {
            listen 443;
            server_name 111.111.111.111 domain.com;
            return 301 https://www.domain.com$request_uri;
}

server {
            listen 443 ssl default deferred;
            server_name www.domain.com;

остаток кonfigа

всё заработало как надо.

спасибо
 
Назад
Сверху