NGINX:将非 www https 重定向到 https://www

NGINX: redirect non-www https to https://www

我遵循了这个答案 but it redirects only from http to https and non www to www, but if I go to my website at https://example.com 我得到了 'your connection is insecure'。

如何将其重定向到 https://www

server{
  listen 443 ssl;
  server_name www.mydomain.com;
  root /www/mydomain.com/;

  ssl    on;
  ssl_certificate /ssl/domain.crt;
  ssl_certificate /ssl/domain.key;
  .
  . 
  .
}

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

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

第三台服务器缺少 SSL 证书,这就是浏览器显示连接不安全的原因。

将您的最后两台服务器替换为:

# redirect www.mydomain.com to https
server {
  listen 80;
  server_name www.mydomain.com;
  return 301 https://$server_name$request_uri;
}

# redirect mydomain.com to https
server{
  listen 80;
  server_name mydomain.com;
  return 301 https://www.$server_name$request_uri;
} 

获得正确配置的一个好方法是为每个重定向使用新块,一个从 http 到 https,一个从非 www 到 www。

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

server {
    listen 443 ssl;
    ssl_certificate     /path/to/certificate.crt;
    ssl_certificate_key /path/to/private/key.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    server_name www.example.com;
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl;
    ssl_certificate     /path/to/certificate.crt;
    ssl_certificate_key /path/to/private/key.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    server_name example.com;

    # do the proper handling of the request
}