Nginx https 在 Nginx 中应该怎么配置默认就是使用 https 呢?

QueXuQ · 2018年05月04日 · 最后由 ecnelises 回复于 2018年05月09日 · 1047 次阅读

配置好https后,发现了两个问题:
我们配置的域名是www.xxx.com,但是发现ruby china是使用xxx.com,不需要用到前面的www,这两种方式的区别在哪里呢?哪3一种比较好。
还有一个就是,现在访问,默认依然是使用http,只有在使用https访问,才会用到https,怎么在nginx配置,默认就是使用https呢?

共收到 5 条回复

一般来说xxx.com是一级域名,www.xxx.com aaa.xxx.com是二级域名,访问默认还是使用http说明你还是没弄好,http默认80端口,请求过去之后会跳转到443端口,就是https了

将80端口的请求重定向到443端口

server {
  listen 80;
  listen [::]:80;
  server_name www.xxx.com;
  return 301 https://$host$request_uri;
}
lixu19941116 回复

多谢, 我试试看,可以成功不。

要看你买的SSL凭证是单一的 xxx.com?或是 www.xxx.com? 或是你买的是 *.xxx.com 的 wildcard 的凭证?

前面要不要 www 都没有说一定哪一个好,只是要考量用户两种都可能访问,都要redirect或rewrite到真正服务器所在的位置。

我都用这样的配置,将80,443端口设置在一起,强制都以https来访问:

server {
    listen 80;
    listen 443 ssl;
    server_name www.xxx.com;
    ssl_certificate ssl/server.crt;
    ssl_certificate_key ssl/server.key;
    access_log /www.xxx.com/logs/access.log;
    error_log /www.xxx.com/logs/error.log;
    root /www.xxx.com/public;

    if ($ssl_protocol = "") {
      rewrite ^ https://$server_name$request_uri? permanent;
    }

    location / {
    # ...
    }
}

国外的很多网站已经没有 www 了,有 www 也会重定向到没有的域名。可以从 cookie 域的角度考虑自己是否需要 www。另外 https 除了 301 之外最好加上 hsts

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册