Nginx配置SSL实现https请求并重定向http请求
原因
本篇文章主要记录下自己配置 网站实现https请求的步骤和自己遇到的一些问题。
环境说明
在腾讯云同时也提供了免费的SSL证书(有效期1年)。
我们进入SSL证书管理控制台,点击【申请证书】
Nginx 证书部署
首先到你的腾讯云下载你的证书www.***.com.zip的压缩包,解压后有不同服务器的证书文件,这里只要Nginx的就可以了
将Nginx文件中的1_www.***.com_bundle.crt和2_www.***.com.key上传至你的服务器中,我将文件放在了/etc/nginx下。
接下来修改你的Nginx配置文件nginx.conf:
server {
listen 443;
server_name www..com; #填写绑定证书的域名
ssl on;
ssl_certificate 1_www..com_bundle.crt;
ssl_certificate_key 2_www..com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录
index index.html index.htm;
}
}
配置完成后,先用bin/nginx –t来测试下配置是否有误,正确无误的话,然后通过service nginx restart重启nginx。就可以使 https://www.**.com 来访问了。
这里有几个问题需要注意下:
配置文件的证书文件的地址一定要指定对,可能你没有放在Nginx的根目录下。
端口问题,http是80端口,但https是443,在配置nginx的时候千万别忘记修改端口。
相关参数说明供参考:
http自动跳转https
配置到这里如果没有意外的话已经可以通过https访问了,但可能很多用户还是会通过http访问,所以需要将你原来的http重定向到你的https上。
只需要在Nginx配置中加入下面配置:
rewrite ^ https://request_uri? permanent;
但要注意的是,不是在你原来443端口下加,这样会死循环的,而是另外启个server,类似于下面的配置:
server {
listen 80;
server_name www.***.com;
rewrite ^ https://request_uri? permanent; # force redirect http to https
}
server {
listen 443;
server_name www..com; #填写绑定证书的域名
ssl on;
ssl_certificate 1_www..com_bundle.crt;
ssl_certificate_key 2_www.**.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录
index index.html index.htm;
}
}
这样就能实现重定向了。
如果想同时启用Http和Https,也可以这样配置:
server {
listen 80;
listen 443 ssl;
server_name www.***.com;
ssl_certificate www.***.com.crt;
ssl_certificate_key www.***.com.key;
…
}
总结
配置的时候还是多试试,然后访问的页面要放到这个配的nginx的目录下就行。