【问题标题】:NGINX: redirect non-www https to https://wwwNGINX:将非 www https 重定向到 https://www
【发布时间】:2018-04-22 12:40:40
【问题描述】:

我遵循了这个答案https://stackoverflow.com/a/28068250/3108268,但它仅从 http 重定向到 https,而非 www 重定向到 www,但是如果我在 https://example.com 访问我的网站,我会得到“您的连接不安全”。

如何将其重定向到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;
} 

【问题讨论】:

  • 如果您改用$http_host 会怎样? return 301 https://www.$http_host$request_uri;
  • 这只是我使用的配置,我认为它可能会有不同的结果。很抱歉没有。
  • 等等。如果您的证书不涵盖顶级域mydomain.com,那么重定向将永远不会发生是很自然的。
  • 是的。如果您导航到 domain.com,您最终会在 https:// domain.com 出现警告,而不是实际重定向到 www

标签: ssl redirect nginx config


【解决方案1】:

第三台服务器缺少 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;
} 

【讨论】:

  • $server_name 实际上应该是 $host,不是吗?
【解决方案2】:

获得正确配置的一个好方法是为每个重定向使用新块,一个从 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
}

【讨论】:

  • 这只是在您的情况下使用的一个示例,不要指望复制粘贴,仅此而已。您可以根据需要轻松更改变量。
  • 我遇到了一些奇怪的问题,即只有 Chrome 在某些重定向上会失败。以这种方式分解它修复它...谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 2017-03-10
  • 2018-02-02
  • 2015-10-23
相关资源
最近更新 更多