Подтвердить что ты не робот

Nginx перенаправляет HTTPS на HTTP

Как я могу переназначить с https на http?

У меня есть код ниже, но он не работает.

server {
        listen 443;
        server_name example.com;
        rewrite ^(.*) http://example.com$1 permanent;
 }
4b9b3361

Ответ 1

Ответ выше будет работать, вам нужно создать собственный сертификат (или иметь реальный) и настроить nginx как таковой:

server {
  listen *:443;
  ssl on;
  server_name domain.com;
  rewrite ^(.*) http://domain.com$1 permanent;

  ssl_certificate      /data/certs/domain.crt;
  ssl_certificate_key  /data/certs/domain.key; 
 }

Имейте в виду, что если это самоподписанный сертификат, браузер предоставит вам уродливое предупреждение.

Ответ 2

Составив комментарий jberger, конфигурация, которая должна работать, будет:

server {
    listen *:80;
    server_name example.com;
}

server {
    listen              *:443 ssl;
    server_name         example.com;
    ssl_certificate     /etc/ssl/certs/example.com.cert;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    return 301 http://$server_name$request_uri;
}

Ответ 3

    if ($host = 'foo.com') {
        rewrite  ^/(.*)$  http://www.foo.com$1  permanent;
    }

Ответ 4

Вам необходимо создать 2 отдельных серверных блока:

  1. Порт 443 (HTTPS) - Определите все, как PHP, 404, home, root и т.д. В этом блоке. Даже если вы хотите перенаправить https://www.example.com в https://example.com или наоборот, сделайте это здесь, как это сделал @coulix.

  2. Порт 80 (HTTP) - здесь вы просто будете использовать:

server {
    listen    80;
    listen    [::]:80;
    server_name    example.com www.example.com;

    # Redirect HTTP to HTTPS
    return    301    https://example.com$request_uri;
}