как перенаправить с http (s): // (www.) Example.com на https://example.com с помощью Nginx?

Как и указано в заголовке.

Я нашел еще один полезный Вопрос / ответ , но он не показывает, как чтобы сделать это правильно в настройках Nginx, я имею в виду параметры . Он может иметь в виду, что https://exmaple.com должен иметь действующее рукопожатие, прежде чем его перенаправят на https://www.example.com . В моем сценарии https://www.example.com отлично работает, но https: example.com не может быть перенаправлен на https: //www.example .com .

server {
    listen 80;
    server_name example.com www.example.com;
    rewrite ^ https://example.com$request_uri? permanent;
}

server {
    listen 443;
    server_name example.com;

    ssl on;
    # some other settings, correctly

}

Но при просмотре http://example.com он перенаправляется на https://example.com , но отображается в Chrome

This site can’t be reached 
example.com unexpectedly closed the connection.
ERR_CONNECTION_CLOSED```

Я хочу перенаправить всех на https://example.com , как?

- обновлено -

/var/log/nginx/access.log показывает

"GET / HTTP/2.0" 301 216 "-" 

без ошибок в /var/log/nginx/error.log

Большое спасибо !!!

1
задан 13 April 2017 в 15:14
2 ответа

Значит, вы хотите перенаправить весь трафик на https://www.example.com ?

Я думаю, вам не хватает ssl в listen 443 ssl ;

См. пример ниже

Основная конфигурация с HTTPS - www.example.com

server {
    listen 443 ssl;
    server_name www.example.com;
    ssl_certificate /path/ssl.crt
    other ssl config....
}

Перенаправить голый домен HTTPS на WWW

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

Перенаправить весь HTTP

server {
        listen 80;
        server_name example.com www.example.com;
        return 301 https://www.example.com$request_uri;
    }
0
ответ дан 4 December 2019 в 10:53

Как это

# Redirect all variations to https://www domain
server {
  listen 80;
  access_log  /var/log/nginx/hr.access.log main buffer=128k flush=60;
  server_name example.com www.example.com;
  return 301 https://example.com$request_uri;
}

server {
  listen 443 ssl http2;
  server_name www.example.com;

  ssl_certificate /var/lib/acme/certs/x/fullchain;
  ssl_certificate_key /var/lib/acme/certs/x/privkey;

  access_log  /var/log/nginx/hr.access.log main buffer=128k flush=60;

  # Set up preferred protocols and ciphers. TLS1.2 is required for HTTP/2
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

  # This is a cache for SSL connections
  ssl_session_cache shared:SSL:2m;
  ssl_session_timeout 60m;

  return 301 https://example.com$request_uri;
}
-1
ответ дан 4 December 2019 в 10:53

Теги

Похожие вопросы