配置好 https 后,发现了两个问题: 我们配置的域名是www.xxx.com,但是发现 ruby china 是使用xxx.com,不需要用到前面的www,这两种方式的区别在哪里呢?哪 3 一种比较好。 还有一个就是,现在访问,默认依然是使用 http,只有在使用 https 访问,才会用到 https,怎么在 nginx 配置,默认就是使用 https 呢?
www.xxx.com
xxx.com
www
一般来说 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; }
多谢,我试试看,可以成功不。
要看你买的 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
推荐用这个 https://freessl.cn/ 一个提供免费 HTTPS 证书申请的网站,(Let's Encrypt 与 TrustAsia)我刚试了, https://lumao.vicw.com/ 这是我搞的撸猫网,证书有效期 1 年,可以续订,比自己搞简单多了