nginx redirect from http to https

Добрый день

Хочу использовать только https и хочу сделать редирект с http на https
Делаю так
server {
listen *:80;
server_name example.com;
rewrite ^(.*)$ https://$server_name$1 permanent;
}

server {
listen *:443;
...
}

и при переходе на example.com

The plain HTTP request was sent to HTTPS port

https работает нормально

enginx использую в качестве фронт-енда, апач в качестве бекенда.

Хочу чтобы все соединения до nginx шли в зашифрованном виде, а между nginx apache уже обычный http.

Что я делаю не так? Может есть какой-либо другой способ решить поставленную задачу?
  • Вопрос задан
  • 75765 просмотров
Решения вопроса 1
@ilnarb
а если так?
server {
  listen *:80;
  server_name example.com;
  proxy_set_header Host example.com;
  location / {
    rewrite ^(.*)$ https://example.com$1 permanent;
  }
}
server {
  listen *:443 ssl;
  server_name example.com;
  proxy_set_header Host example.com;
  location / {
    proxy_pass http://127.0.0.1:8080;
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 11
@metajiji
Согласно официальной документации рекомендуют использовать такую конструкцию:
server {
        listen 80;
        server_name example.com;
        return 301 https://$server_name$request_uri;  # enforce https
#        rewrite ^(.*) https://www.example.com$uri permanent;
}
Ответ написан
nikitasius
@nikitasius
еще хороший вариант:
if ($ssl_protocol = "") {                                
                                rewrite ^/(.*) https://$server_name/$1 permanent;
}

У меня такой код для определенных location сделан. К примеру чтобы admin и иже с ними только через https работыли.
Ответ написан
@xtreme
Снимаю порчу по SSH :)
Блин, начал писать про редирект в коде, и почему-то вспомнил про .htaccess. Некрасиво получилось :)
В общем искать надо, где 443 стоит рядом с http://
Ответ написан
max_mara
@max_mara Автор вопроса
Не помогло, все-равно

400 Bad Request The plain HTTP request was sent to HTTPS port
Ответ написан
mastini
@mastini
Попробуйте так:

rewrite ^(.*) https://$host$1 permanent;
Ответ написан
@xtreme
Снимаю порчу по SSH :)
Только что ради эксперимента проделал такой редирект. Причем с буква-в-букву приведенным конфигом, за исключением server_name-ов. Все работает отлично. Видимо проблема не в данной части, а далее, например, в описании проксирования на апач.
proxy_redirect off; не забыли?
Ответ написан
@1099511627776
Пишу все что интересно и на всем на чем интересно
>400 Bad Request The plain HTTP request was sent to HTTPS port
Я думаю что тцт просто сам браузер не знает что надо посылать шифрованный запрос. и посылает назащифрованный.
Может стоит попробовать сделать редирект через сам движок
PHP:
header('Location: https://.........../');
Ответ написан
@dabster
не забываем в виртуалхосты апача добавить SetEnvIf X-Forwarded-Proto https HTTPS=on
Ответ написан
aafrimenaa
@aafrimenaa
IT-технологии
Друзья, у кого работает редирект, можно скрипт сюда скинуть?
не забываем в виртуалхосты апача добавить SetEnvIf X-Forwarded-Proto https HTTPS=on
а это куда именно добавлять, в какие строчки?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы