我刚刚安装了一个新的控制面板(Vesta),它通过Let'sEncrypt自动提供SSL支持。现在我的所有域都有SSL证书,但所有域仍然使用http://打开(使用域 .com时),而不是https://。
现在我希望所有域都默认使用https://。我该怎么做?
我没有很多域(~15),所以我不介意每域的方法,但如果可能的话,服务器范围的单个脚本会更好。如果按域访问,我确实想要一个通用脚本(例如$ domain,而不是字面上的example.com)。
为了记录,我有一个Ubuntu 16.04 VPS在没有Apache的情况下运行Nginx + php-fpm。
<子> P.S。我看到了很多关于这个主题的帖子,通过谷歌,没有帮助我,所有帖子都没有关闭投票。所以我把它放在这里。
老实说,在这个时代默认使用SSL非常困难,因为它应该像食物,饮料和头顶上的标准一样标准化。 < /子>
答案 0 :(得分:-1)
您可以创建一个侦听端口80的服务器块,HTTP 301将其重定向到您的HTTPS域。
server {
listen 80;
server_name yourdomain.com;
return 301 https://yourdomain.com$request_uri;
}
您可能还有一个服务器块而不是80和443上的侦听,但使用HTTP严格传输安全性(HSTS)来优先选择443。
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
启用此标头后,端口80上的请求将被重定向到443.浏览器会记住您的域更喜欢HTTPS,后续请求会在请求80个流量之前重定向到443。在Chrome中,它在您的网络标签上显示为307内部重定向。
重要提示:请注意,这与预加载 HSTS不同,后者在互联网上更为永久。
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
我希望有所帮助。
干杯, 伊恩